首页 新闻 会员 周边 捐助

IList<业务类>绑定Gridview问题

0
悬赏园豆:50 [已解决问题] 解决于 2009-12-09 23:33

例:我有一个员工表,和一个员工类型表

对应的员工实体中有一个属性是员工类型ID

比如现在我要在Gridview上显示一个IList<员工实体>

提问:我的员工类型ID如何显示“员工类型的名称”呢??

目前做法是二个表关联后查出字段到DataTable中,然后绑定Gridview

 或者在员工实体类内增加一个员工"员工类型的名称"的属性

哪位大虾能帮帮我。谢谢

xteam_wx的主页 xteam_wx | 初学一级 | 园豆:50
提问于:2009-12-07 22:57
< >
分享
最佳答案
0
public class EmployeeType
{
public int TypeID{get;set;}
public string TypeName{get;set;}
}

public class Employee
{
public int ID{get;set;}
public int TypeID{get;set;}
public string Name{get;set}
}
 
 

 

DataGridView 绑定 List<Employee>,同时 DataGridView 的 TypeID 设置为ComboBox,然后ComboBox绑定 List<EmployeeType>,ComboBox设置为DropDawnList.

 完成后的效果就是,读入数据,绑定到视图,在TypeID这一列,系统会自动根据该行的TypeID值,从ComboBox中选择对应此值的TypedName显示在表格中.

 


收获园豆:50
Launcher | 高人七级 |园豆:45050 | 2009-12-08 09:10
这样子的设计虽然是可以完成功能了。但是如果这个实体我进行插表时使用ORM的话,那么就无法让ORM来知道哪些字段是一个表的。难道实体中的每个属性都加上Table 这样的扩展属性吗?
xteam_wx | 园豆:50 (初学一级) | 2009-12-08 11:18
我没用任何Table,不知道你看懂这个方案没有,最初的绑定List<Employee>是对应到表Employee的,由于Employee中的字段TypeID是可枚举值,所以我们可以把TypeID所有可能的值都列出来,于是使用ComboBox列来绑定. 这样,你如果需要更改类型,通过ComboBox选择类型名称后,对应的 TypeID值会自动更新到List<Employee>中对应行的Employee实体的TypeID上。然后你通过更新绑定数据源List<Employee>到数据库,使用ORM是可以完成的。此过程你只更新了Employee表。 其二,如果你要添加新的类型,或修改原有类型,把ComboBox改成可编辑模式,然后你对其修改,添加,或者删除,绑定ComboBox的List<EmployeeType>可以把数据更新到EmployeeType表中。 这两种更新,互相不干扰。都只负责更新自己绑定的表的数据。
Launcher | 园豆:45050 (高人七级) | 2009-12-08 11:46
其他回答(3)
0

定义一个数据显示的实体类EmployerModel,把需要显示的数据放到Lis<EmployerModel>类型的变量EmployerModels中。然后再绑定之,即可。而且代码很清晰。

刘恩富 | 园豆:210 (菜鸟二级) | 2009-12-07 23:20
这种方式我已经说过了,我的实体类EmployerModel 只有对关联表的ID属性,没有其它属性,而我现在要显示是是关联表内的TypeName属性
支持(0) 反对(0) xteam_wx | 园豆:50 (初学一级) | 2009-12-07 23:23
0

前面有人问过相识的问题

http://space.cnblogs.com/question/10697/

你可以参考一下

其实这是对于实际业务中的“对象”的理解,这个不能仅仅从理论上去考虑。

现在你需要体现的“对象”是一个employe,那么你的这个实体就应该包含有employeid,employename等等

要这个实体就有点名不副实,当然了你的业务不要求这样考虑也无所谓的了。毕竟技术是服务于实际业务的

persialee | 园豆:3217 (老鸟四级) | 2009-12-07 23:42
0

是否可以考虑读取员工类型数据到Dictionary<TypeID,TypeName>,前台绑定时通过TypeID取TypeName,这样不用连表查询

Ryan.Sun | 园豆:360 (菜鸟二级) | 2009-12-08 01:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册