我们在日常的使用中,经常会用到DataGridView控件,可以将一个BindingList<T>的对象集合赋给DataSource属性,来实现数据源的绑定!
首先看一下 IEditableObject这个接口,MSDN中的定义是:提供提交或回滚对用作数据源的对象所做更改的功能。接口中定义了三个方法,分别是:
| 名称 | 说明 |
|---|---|
| BeginEdit | 开始编辑对象。 |
| CancelEdit | 放弃上一次BeginEdit调用之后的更改。 |
| EndEdit | 将上一次BeginEdit 或 IBindingList..::.AddNew调用之后所进行的更改推到基础对象中。 |
在MSDN中有个备注:该接口通常用于捕获 DataRowView 的 BeginEdit,EndEdit 和 CancelEdit语义。这个接口支持撤销的!这个备注的意思是当在DataGridView编辑一个实现了IEditableObject的 T 类型集合时,当前行默认的是编辑状态,当前焦点进入一个DataRow时,会触发 T中定义IEditableObject.BeginEdit函数,离开焦点时,会触发T中定义IEditableObject.EndEdit函数,按下ESC时,会触发CancelEdit函数。有了这个接口,我们就可以将一个类型的读写操作放到对象中,更符合面向对象的思想。同时,在一个界面中给DataGridView赋予不同的类型集合,集合中对象类型不同,都能实现属性的编辑,委托给合适的对象中的编辑函数,而不用对界面进行什么更改!下面举个实体类的例子进行说明一下:
可以通过给一个DataGridView绑定一个BindingList<Student>的数据源,当界面有上文说到的事件发生时,就会触发Student类型中的相应函数。如果我们在实际中需要维护一个对象集合时,我们可以通过DataGridView来提供编辑界面,利用DataGridView这种方式自动的维护对象的数据。





}
}
浙公网安备 33010602011771号