背景知识了解:
1. DataRelation
这个类主要的方法有GetParentRow 和 GetChildRows . 使用这个类可以方便的得到主表中某一条记录对应的字表记录,或者相反。此类可以从ds.Relations或者dt.ChildRelations/ParentRelations得到。注意创建Relation时,最后一个参数为是否创建外键约束条件。默认为True。当绑定到一个DataRelation的时候,默认绑定到其GetChildRows
http://msdn.microsoft.com/zh-cn/library/d6s958d6%28v=VS.80%29.aspx
本文介绍两种绑定类型简单绑定(Simple Binding)和复杂绑定(Complex Binding)
简单绑定
它表示控件属性和数据源的一个对象之间的联系,通过Binding对象来表示一个绑定。每一个Control均有DataBindings属性,它是Binding类的集合。
创建绑定
要为某个对象的属性创建一个简单绑定,只需对其DataBindings属性调用Add方法。
创建一个Binding类需要如下参数:
"Text", 需要绑定的控件属性。
dtCustomers, 数据源。
"CustName", 导航路径。
该类用数据源和导航路径来确定绑定的目标。举几个例子就容易懂了。
数据源是DataSet,内有Customers表一张,现需要绑定到其Cust_Name字段上去,则导航路径为"Customers.Cust_Name",
数据源是List<TextBox>, 绑定到TextBox的Text属性,则导航路径为"Text";
Binding Class有两个重要事件.Parse/Format
获取BindingManagerBase
BindingManagerBase为抽象类,其所使用的实例化类为CurrencyManager/PropertyManager。当绑定到IList, IBindingList对象时会创建CurrencyManager对象。一个CurrencyManager对象,保存了当前数据集中游标的位置,也即是Position属性。不同控件可以共用一个CurrencyManager对象。
(this 为CustNameTextBox所在的form)
若绑定添加方式为
则获取方式为
若绑定添加的方式为
则获取方式为
注意获取和添加绑定的方法必须保持一致。
复杂绑定
绑定的对象是二维或多更多。比如Grid的绑定。此类绑定通常是通过设置其DataSource和DataMember属性来实现。DataMember属性也即是上文所指的导航路径。与上种绑定类型相比,其导航路径的写法更为多样。举例如下:
数据源是DataSet,内有Customers(CustID, CustName), Order(CustID, OrderDate, OrderQuantity),以及DataRelation CustToOrder(Customers.CustID => Order.CustID),绑定Grid到所有的Order则写法可以为:
绑定到某个Customer的所有Order则为:
此时若需要设置类似的Format 和Parse则一般通过绑定的控件的提供的功能来实现。
获取BindingManagerBase
若绑定方式为
获取表Customers的BindingManagerBase的方法为:
获取当前Customer的下一个Order记录的方法为:
另有杂项的How To:
1. 如何确保同一数据源的多个对象之间的同步。
可以通过使用BindingSource类作为数据源,以得到更多的控制。http://msdn.microsoft.com/zh-cn/library/ms404299%28VS.85%29.aspx
2. 如何给自定义对象添加数据绑定功能。
3. 如何为不同控件指定不同的BindingManagerBase。
为需要独立Position控制的控件创建自己的BindingContext对象,并赋值给这个控件的BindingContext属性,然后在添加绑定即可。http://msdn.microsoft.com/zh-cn/library/dek6b6k3(v=VS.90).aspx
4. 如何自定义可绑定的数据源。
本文介绍了两种数据绑定类型:简单绑定和复杂绑定。简单绑定用于建立控件属性与数据源对象之间的联系,而复杂绑定则用于处理二维或多维数据源的绑定情况。文章详细解释了如何创建这两种类型的绑定,并提供了具体示例。
2667

被折叠的 条评论
为什么被折叠?



