我可以通过设置 DataSource 属性直接将我的 DataGridView 控件绑定到我的业务对象的绑定列表。我的业务对象实现了 INotifyPropertyChanged,因此当将新项目添加到绑定列表或更新现有项目时,DGV 会得到更新。
关于处理单个记录,我可以将我的业务对象绑定到文本框和其他相关控件。
我还可以从 BindingList 派生并创建一个 CustomBindingList 类来实现 IBindable 所需的方法,如下面的链接中所述:http: //msdn.microsoft.com/en-us/library/aa480736.aspx
或者,我看到人们推荐使用 BindingSource。BindingSource 的Datasource 是业务对象,DGV 的DataSource 是BindingSource。
无论如何,基于 BindingSource 并不能提供给我:
- 过滤(过滤器不起作用)。实施需要由我提供。
- 排序和搜索不起作用。实施需要由我提供。
那么,为什么推荐使用 BindingSource 方法呢?
更广泛的情况:我不熟悉 OOPS 概念和 C#。使用数据库应用程序。窗体。到目前为止只使用了DataSet/DataTable 的方法。现在尝试创建和使用我自己的自定义类。
通常有一个主/明细表。当我单击 DGV 中的详细信息行时,我想在单独的窗口中编辑该记录。因此,我需要获取 DGV 中该行表示的列表项的句柄。试图为此找到解决方案让我想到了这一点和这个疑问。
鉴于我想做什么,哪种方法更好,为什么?
这里的一些指针真的很有帮助,因为我对此很陌生。