基于BindingSource的WinForm开发.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于BindingSource的WinForm开发

基于BindingSource的WinForm开发 1.引言 BindingSource组件是数据源和控件间的一座桥,同时提供了大量的API和Event供我们使用。使用这些API我们可以将Code与各种具体类型数据源进行解耦;使用这些Event我们可以洞察数据的变化。 2.简单绑定 DataTable myTable = myTableAdapter.GetData();//创建Table BindingSource myBindingSource= new BindingSource();//创建BindingSource DataGridView myGrid = new DataGridView();//创建GridView myGrid.DataSource = myBindingSource;//将BindingSource绑定到GridView myTable;//绑定数据到BindingSource 注: 1)绑定到DataTable,其实是绑定到DataTable提供的DataView上。每个DataTable都有一个缺省的DataView 2)DataView是绑定的实质,正如其名,它是DataTable的数据的展现。因此可以对同一个DataTable ,构建多个DataView,进而可以对这同样的数据实施不同的过滤、排序等方法,从不同侧面展示DataTable。这也体现了一定的MVC思想。 3)BindingSouce也可作为数据(其实是数据引用)的容器在不同窗体间传递,从而实现在弹出窗体中对数据的编辑 3.主细表 以上图所示数据为例: 1)DataSet:myDataSet 2)DataTable:ParentTable、ChildTable、GrandChildTable 3)Relation:FK_Parent_Child、FK_Child_GrandChild //绑定父数据 parentBindingSource.DataSource = myDataSet; parentBindingSource.DataMember = ParentTable; m_GrandParentGrid.DataSource = m_GrandParentBindingSource; //绑定子数据。childBindingSource.DataSource = parentBindingSource;//绑定到“父BindingSource”,而不是父Table childBindingSource.DataMember = FK_Child_GrandChild;//绑定到“父-子Relation” //绑定孙子数据。 grandChildBindingSource.DataSource = childBindingSource;//绑定到“子BindingSource” grandChildBindingSource.DataMember = FK_Child_GrandChild;//绑定到“子-孙Relation” 这样你就可以在Form上摆上3个DataView,分布绑定到这3个BindingSouce,很容易就实现了主细表关联展现。 4.数据操纵 要操纵数据,首先需要获取当前数据项。BindingSource的Current属性返回DataRowView类型的对象(就像DataView是对DataTable的封装一样,DataRowView是对DataRow的封装),它是对当前数据项的封装,可以通过类型转换变成你想要的对象。 DataRowView currentRowView = myBindingSource.Current;//获取当前RowView CustomersRow custRow = currentRowView.Row as CustomersRow;//类型转换为当前数据项 string company = custRow.CompanyName;//使用当前数据项 string phoneNo = custRow.Phone; 5.用BindingSource做数据容器 BindingSource还可以用作数据容器,即便它没有绑定到数据源上,它内部有一个可以容纳数据的list。 5.1Add方法 调用Add方法会在BindingSource的list中插入数据项。如果这时第一次插入数据,并且没有绑定数据,那么插入数据的类型就决定了今后此list中数据的类型。 注: 1)此时再插入其它类型对象会抛出InvalidOperationException异常 2)设置DataSource属性时会刷新list,造成Add方法添加到list中的数据丢失 5.2AddNew方法 AddNew

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档