数据绑定应该使用 BindingSource 类 而不是使用ListControl.databingding
2010-01-12 00:19
435 查看
不使用 BindingSource 作为控件和基础数据源的中间层也行,但是 BindingSource 在很多时候非常有价值,这里只展示了一个很小的方面。
1. ListControl.DataSource 属性
获取或设置此 ListControl 的数据源。实现 IList 或 IListSource 接口的对象可以作为数据源,如 DataSet 或 Array。
假设现在有两个对象:List<T> 的 mylist,ListBox 类型的 listBox1。下面这条语句可以使 mylist 的内容显示到 listBox1 中(方法一):
listBox1.DataSource = mylist;
2. BindingSource 类
封装窗体的数据源。BindingSoiurce 实现的接口有:Component, IBindingListView, IBindingList, IList, ICollection, IEnumerable, ITypedList, ICancelAddNew, ISupportInitializeNotification, ISupportInitialize, ICurrencyManagerProvider。
假设现在还有一个 BindingSource 对象 bsrc ,下面的语句也可以使 mylist 的内容显示到 listBox1 中(方法二):
bsrc = new BindingSource(mylist, null);
listBox1.DataSource = bsrc;
3. 为什么需要 BindingSource ?
先看看 BindingSource 除了让控件知道从哪儿读取数据,还能做什么:
它通过提供一个间接寻址层、当前项管理、更改通知和其他服务简化了窗体中控件到数据的绑定。这是通过将 BindingSource 组件附加到数据源然后将窗体中的控件绑定到 BindingSource 组件来实现的。与数据的所有进一步交互,包括定位、排序、筛选和更新,都通过调用 BindingSource 组件实现。
值得注意的最后一句话,我在《对象引用的保护措施》中提出的“包装类”方案就是想让包装类做到这样。
总之,BindingSource 可以监视(直观地说是“监视”,本质上是“代理”)数据源的变化。在上面的方法一中,listBox1 不能跟踪 mylist 的变化,比如由这条语句引起的数据变更:
mylist.RemoveAt(3);
如果要让 listBox1 反应 mylist 的最新情况,需要:
listBox1.DataSource = null;
listBox1.DataSource = mylist;
或其它可以使 listBox1 与 mylist "从头开始"的语句
1. ListControl.DataSource 属性
获取或设置此 ListControl 的数据源。实现 IList 或 IListSource 接口的对象可以作为数据源,如 DataSet 或 Array。
假设现在有两个对象:List<T> 的 mylist,ListBox 类型的 listBox1。下面这条语句可以使 mylist 的内容显示到 listBox1 中(方法一):
listBox1.DataSource = mylist;
2. BindingSource 类
封装窗体的数据源。BindingSoiurce 实现的接口有:Component, IBindingListView, IBindingList, IList, ICollection, IEnumerable, ITypedList, ICancelAddNew, ISupportInitializeNotification, ISupportInitialize, ICurrencyManagerProvider。
假设现在还有一个 BindingSource 对象 bsrc ,下面的语句也可以使 mylist 的内容显示到 listBox1 中(方法二):
bsrc = new BindingSource(mylist, null);
listBox1.DataSource = bsrc;
3. 为什么需要 BindingSource ?
先看看 BindingSource 除了让控件知道从哪儿读取数据,还能做什么:
它通过提供一个间接寻址层、当前项管理、更改通知和其他服务简化了窗体中控件到数据的绑定。这是通过将 BindingSource 组件附加到数据源然后将窗体中的控件绑定到 BindingSource 组件来实现的。与数据的所有进一步交互,包括定位、排序、筛选和更新,都通过调用 BindingSource 组件实现。
值得注意的最后一句话,我在《对象引用的保护措施》中提出的“包装类”方案就是想让包装类做到这样。
总之,BindingSource 可以监视(直观地说是“监视”,本质上是“代理”)数据源的变化。在上面的方法一中,listBox1 不能跟踪 mylist 的变化,比如由这条语句引起的数据变更:
mylist.RemoveAt(3);
如果要让 listBox1 反应 mylist 的最新情况,需要:
listBox1.DataSource = null;
listBox1.DataSource = mylist;
或其它可以使 listBox1 与 mylist "从头开始"的语句
相关文章推荐
- ASP.NET DEMO Ⅳ : 使用数据源控件将数据绑定到 ListControl 上
- android数据绑定框架DataBinding使用
- .NET 4.0 - Winform Control - DataGridView 数据绑定(ADO.NET Data Service)
- jface databinding:可多选的widget List组件selection项目与java.util.List对象的双向数据绑定
- Control.DataBinding数据绑定细解
- GridView的HyperLinkField的DataNavigateUrlFormatString如何使用自定义的变量,而不是数据库绑定的值
- window phone list box使用收藏,mvvm ItemsControl数据绑定
- Android DataBinding数据绑定技术在传统ListView中的使用简例
- 数据绑定上下文DataContext与静态资源使用
- Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader
- 【 D3.js 选择集与数据详解 — 2 】 使用data()绑定数据
- 安卓删除List里面某些一样的数据为何使用的是迭代器而不是for循环
- ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(一)
- Windows Mobile中使用ListControl显示大容量数据
- 数据绑定之DataFormatString使用介绍
- 【 D3.js 选择集与数据详解 — 2 】 使用data()绑定数据
- 数据绑定之DataFormatString使用介绍
- 数据绑定(七)使用ObjectDataProvider对象作为Binding的Source
- dataBingding 使用 范例
- 数据绑定以及Container.DataItem几种方式与使用方法分析