资源描述:
《使用C#开发Windows数据库应用程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章使用C#开发Windows数据库应用程序简单数据绑订复杂数据绑订数据源的类型DataGrid的使用Windows应用程序开发实例本章要点9/16/20218.1数据绑定数据绑定是指数据源元素与图形界面的接口技术,如使用TextBox控件绑定到表中的单个值。窗体控件可以按照两种方式绑定数据:简单数据绑定和复杂数据绑定。Windows数据绑定控件(如Label、Button或TextBox能够绑定数据,因为Binding类提供了这样的功能(System.Windows.Forms.Binding),这个类由.NETFramework提供,负责在每个
2、控件属性和数据源中的数据元素之间创建简单的绑定。如:textBox1.DataBindings.Add(″Text″,da,″Employees.FirstName″);控件的DataBindings属性可以使用Add方法添加其中的每个属性。Add方法有三个参数。第一个参数是控件属性的名称,如TextBox控件的Text属性或者DataGrid控件的DataSource属性。第二个参数是下列任意类,或者实现下列任意接口的类的实例,如表8-1列出几个接口及实现这些接口的类。9/16/2021第三个参数描述数据源中的数据成员。它是必须能转化为标量值的字符
3、串文字,如使用DataSet时要根据表名称所选的列。表8-1可用于Binding类构造函数的第二个参数的类接口实现接口的一些类ICollectionArray,BitArrayIListSourceDataSet,DataTableITypedListDataView,DataViewManager如果想显式声明Binding对象,则可以使用类似下面的代码,例如,想把TextBox控件的Text属性绑定到表中的数据元素上。BindingnewBind=newBinding(″Text″,ds,″Employees.FirstName″);textBo
4、x1.DataBindings.Add(newBind);9/16/20218.1.1简单数据绑定简单数据绑定是指每个控件属性与数据源的单一元素之间的一对一关系。下面的例子演示简单数据绑定,将一组TextBox控件上的Text属性绑定到作为客户列表存储的Customer对象的属性。在控件上使用DataBindings集合添加简单数据绑定。textBoxID.DataBindings.Add("Text",custList,"CustomerID");textBoxTitle.DataBindings.Add("Text",custList,"Cont
5、actTitle");textBoxLastName.DataBindings.Add("Text",custList,"ContactName");textBoxFirstName.DataBindings.Add("Text",custList,"CompanyName");textBoxAddress.DataBindings.Add("Text",custList,"Address");每个TextBox.Text都绑定到当前Customer对象,如同BindingContext进行维护一样。若要更改当前对象,可使用BindingContex
6、t递增或递减集合的Position属性。9/16/2021例如,通过按如下所示处理按钮的Click事件实现MoveNext按钮。privatevoidbuttonMoveNext_Click(objectsender,System.EventArgse){this.BindingContext[custList].Position++;}每当位置更改时,BindingContext引发一个事件。this.BindingContext[custList].PositionChanged+=newSystem.EventHandler(customer_
7、PositionChanged);privatevoidcustomer_PositionChanged(objectsender,System.EventArgse){textBoxPosition.Text="Record"+(this.BindingContext[custList].Position+1)+"of"+custList.Length;}9/16/20218.1.2复杂数据绑定复杂数据绑定指将控件绑定到集合(而不是将控件绑定到集合内的单个项)。下面的代码将ComboBox绑定到State对象的一个数组。publicstructSt
8、ate{privatestringshortName,longName;publicState(string