use*_*062 15 .net c# bindinglist bindingsource winforms
我可以通过设置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#的新手.使用数据库应用程序.的WinForms.到目前为止只使用了DataSet/DataTable方法.现在尝试创建和使用我自己的自定义类.
通常具有主/明细表格.当我单击DGV中的Detail行时,我想在单独的窗口中编辑该记录.所以我需要处理DGV中该行所代表的列表项.试图找到一个解决方案,这让我想到了这一点和这个疑问.
鉴于我想做什么,哪种方法更好,为什么?
这里的一些指示确实会有所帮助,因为我对此非常陌生.
当表单上的多个控件使用相同的数据源时,建议使用 BindingSource(幕后:Windows 窗体数据绑定的改进)
设计时:我个人发现 BindingSource 在将数据绑定到控件时从业务对象中选择属性时非常有用。
要获取当前选定行的句柄,请尝试将 bindingSource1.Current as MyBusinessObject;
至于过滤和搜索:我使用第三方 dll 来实现已实现的网格。所以无法帮助您,抱歉。
当您使用不同类型业务对象的列表时,不要直接使用该列表
List<IAnimal> animals = new List<IAnimal>();
animals.Add(new Cat());
animals.Add(new Dog());
bindingSource1.DataSource = animals;
Run Code Online (Sandbox Code Playgroud)
而是使用像这样的 BindingList:
bindingSource1.DataSource = new BindingList<IAnimal>(animals);
Run Code Online (Sandbox Code Playgroud)
这将确保列表中所有访问的对象都是 IAnimal 类型,并避免一些异常。
| 归档时间: |
|
| 查看次数: |
25459 次 |
| 最近记录: |