如何对实体对象进行绑定.

初期.
定义了一个实体的强类型集合.
继承于CollectionBase
由于CollectionBase已经实现了IList接口,我的实体也可以绑定到了datagrid.
默认只要是类的公共属性都会出现在datagrid中.这不是我想要的.翻了一下msdn和在网上查了一下资料,需要使用接口ItypeList才能实现我的要求.

ITypedList接口介绍
提供发现可绑定列表架构的功能,其中可用于绑定的属性不同于要绑定到的对象的公共属性。例如,当使用表示客户表的 DataView 时,您要绑定到 DataView 表示的客户对象上的属性,而不是 DataView 的属性。
接口方法:
GetItemProperties
GetListName
其中最重要的是GetItemProperties 方法,实现它就能自由灵活的控制,要绑定的属性列表.

ItypeList接口

其中方法:GetCustomProperties是用于实体类的那些属性是允许绑定的一个数组.

同时我们还需要实现描述属性的类CustomPropertyDescriptor继承于System.ComponentModel.PropertyDescriptor

这样就算定义完成了,可能实现在实体的绑定.
如果还需要在datagrid中进行编辑,添加,移除,排序等操作.还要在实体集合上实现IBindingList接口.

下面是我的持久层实现在对实体集合进行编辑的代码:

获取实体集合


在datagrid中编辑之后,保存实体

 

还没有处理的问题
1.在进行实体的插入后,把自动增长字段的值更新到实体
2.实体的属性发生改变后,绑定的控件也能实时发应,.net2.0到有一个接口INotifyPropertyChanged可以实现,不知道.net1.1有没有这样的接口,知道的朋友请踢教.

posted on 2006-09-02 19:34  zqonline  阅读(639)  评论(0编辑  收藏  举报

导航