【发布时间】:2015-09-15 07:10:18
【问题描述】:
我有一个非常简单的问题:我有一个基于组合框的自定义控件。它的每个实例都有一个数据库实体列表作为数据源(例如“订单”、“项目”、“客户”等)。我需要一种通用方法,它只返回所选项目的主键,而不管其类型如何。
我觉得这应该很容易,但我无法解决这个问题。我认为可以将如下函数添加到我的自定义组合框类中:
public int GetSelectedItemsPrimaryKey()
{
return (SelectedItem as <<DBEntitiy>>).primaryKey;
}
但事实并非如此。我不知道是否存在所有数据库实体的基本类型,如果有,是否公开它的主键...
编辑
更多细节:我有一个自定义控件(称为 CheckedComboBox),它继承自组合框(因为它与组合框非常相似,只是将 CheckBox 用作项)。因此,此自定义控件将具有数据源字段。我想将此字段设置为数据库条目列表,例如来自数据库中的“订单”表。
using(var db = new DBEntities())
{
CheckedComboBox.DataSource = db.Orders.ToList();
}
所以现在我有一堆这样的自定义控件,每个控件都有一个来自不同表的不同条目列表作为数据源。
现在我想给我的控制函数GetSelectedItemsPrimaryKey,它返回所选项目的主键。这不是问题,如果我知道 DataSource 中存储了哪些类型的项目,我可以这样做:
public int GetSelectedItemsPrimaryKey()
{
return (SelectedItem as Order).OrderPrimaryKey;
}
但是我必须编写一个函数来检查所选项目是否属于数据库中的任何类型的条目,这很痛苦。所以我想要一个通用方法,它执行以下操作:
public int GetSelectedItemsPrimaryKey()
{
return (SelectedItem as <<DBEntitiy>>).primaryKey;
}
【问题讨论】:
-
不明白你到底想做什么!!你能更具体一点吗?这个方法将在 SelectedIndexChanged 或类似的东西上调用?您能否展示如何为您的组合框进行数据绑定?
-
@Mak 我试图详细说明问题...
标签: c# entity-framework combobox