DataGridView中使用BindSource进行数据绑定操作

(转载自:http://www.it165.net/pro/html/201310/7462.html)

使用WinForm已经有好长的一段时间,虽然一直知道得数据绑定是.NET下一项很强大的功能,平时也用的不少,但都是自己用代码写的绑定方法,纯代码流有好处是可以足够的灵活,数据你爱怎么折腾就怎么折腾,而且如果结构设计得好的话可以很方便重用。还有一个问题是,用WinForm窗体控件自带的绑定方式,会生出很多莫名的文件,这还不要紧,一旦涉及到ADO的东西我直接就缴械了——自从认识LinQ后我就很久没用字符串来操作数据库啦,也许那会效率很高,但也没有证据显示LinQ的效率低,在非严谨应用场景里,我更重视开发的效率。

 

DataGridView控件,凡是涉及到数据库一般离不开这个控件,其功能强大到足以让我仰视不止,在DataGridView下对数据库进行增删修改是家常便饭,我还真不敢说我对这个控件用得有多熟,如果可以选择我还真不愿意将精力用在枯燥的界面处理上。

 

重新用回SQLServer的东西,因为处理的几个表比较简单,所以我打算直接用WinForm自动生成的数据绑定功能,Google了一番,发现网上并没比较完整的例程(可能东西比较简单),于是小小的作一下笔记,经飨后来者,顺便做一个备忘。

 

1、建立SQLServer的数据表

 

这点是玩SQLServer的入门活,我就不细说,因为是做演示,我弄了一个最简表出来,如下图所示,对了,我建表用的是SQL Server Manager Studio,对大多人来说应该没有难度。

202103261.jpg

 

2、在工程中生成DataSet数据集

 

我个人对DataSet的理解只数据库实体的一个抽象,简单的说就是将原本用字符串操作数据库转变成用Adapter来操作,当然,其中也保留了灵活的SQL指令功能。

 

在生成DataSet之前,请在VisualStudio中的服务器资源管理器里生成一项“数据连接”,连接步骤1数据表Table_Test所在的数据库,如下图所示(图中除Table_Test外其他请你们忽略,其他表不是我写本Blog所要用到的)。

203254658.jpg

 

建立好数据连接后,在工程里新建一个数据集(DataSet),我个人的命名是MyDataSet,建立好后你会在资源管理窗口里见到一个MyDataSet.xsd的文件,你若有兴趣可以看一下里面的东西,我不解释。你双击xsd这个文件,它会提示你从服务器资源管理器里导入数据,你打开服务器资源管理器将上图显示的Table_Test直接拖到里面,会自动生成下面的表,DataSet的强大在于TableAdapter的强大,这是后话。

203958179.jpg

 

3、建立DataGridView的界面

 

新建一个WinForm的窗体,从工具箱里往窗体里拖一个DataGridView的控件,这很简单,控件名姑且默认就好了。接下来是开始绑定数据。

 

DataGridView的右上角有个小三角形,点击——选择数据源——其他数据源——项目数据源——MyDataSet——Table_Test,好了,DataGridView就已经作好绑定,它会自动显示Table_Test的全部内容,我这里当然是空,如下图所示:

204819324.jpg

 

上面ColumnHeader的样式我是修改过的,别太纠结,但重点不在这里,你看当前窗体的下方,VisualStudio会自动生成下面的几个东西,这分别是MyDataSet、BindSource、TableAdapter的实例,是属于当前窗体下的私有成员,这才是最关建的内容,当然,如果你仅是作显示完全可以不用理会:

205004860.jpg

 

4、DataGridView的编辑

 

在DataGridView控件右上角的小三角形下,有三个选项:启动添加、启动编辑、启动删除,一般情况下要视具体情况而定,我这姑且就全选了。

 

在VisualStudio下生成工程,如下图所示,你可以随意编辑,因为ID的列,我在建表时设定自增量,并作为表的一个主键,所以本列你是编辑不了的,它会自动填充ID,只是我想不明白ID怎么会往负里增大呢?

205744799.jpg

 

5、绑定数据的保存

 

到这一步之前,我们还没有使用任何一句代码,我只能说,单纯的数据显示是非常傻瓜的,如果你想纯代码做到这一步,我想就算不困难也要花不少时间的。

 

数据绑定的概念是,将数据库的数据同步到数据控件上,当控件上显示的数据作了修改后,也一定能同步回数据库里,这一步就必须要动用到伟大的Code了。保存的时机自己可以随便,我在此是用了一个ContextMenuStrip的菜单控件,通过右键显示快捷菜单,再点击保存,其响应函数的内容如下:


01. /// <summary>
02. /// 绑定数据时自动生成的代码,只用于显示数据
03. /// </summary>
04. /// <param name="sender"></param>
05. /// <param name="e"></param>
06. private void MaterialEditForm_Load(object sender, EventArgs e)
07. {
08. // TODO: 这行代码将数据加载到表“myDataSet.Table_Test”中。您可以根据需要移动或删除它。
09. this.table_TestTableAdapter.Fill(this.myDataSet.Table_Test);
10. }
11. //
12. //
13. /// <summary>
14. /// 右键快捷菜单的响应函数
15. /// </summary>
16. /// <param name="sender"></param>
17. /// <param name="e"></param>
18. private void 保存数据ToolStripMenuItem_Click(object sender, EventArgs e)
19. {
20. //结束DataGridView的编辑状态
21. this.dataGridView1.EndEdit();
22. //结束BindSource的编辑状态,为提交更改作准备,重要
23. this.tableTestBindingSource.EndEdit();
24. //
25. //检查是否作出更改
26. if (this.myDataSet.GetChanges() == null)
27. {
28. return;
29. }
30. //
31. //同步数据至实体数据库中
32. this.table_TestTableAdapter.Update(this.myDataSet);
33. }

6、结语

 

相像过么?正常情况下我们要插入哪怕一条小小的记录(更别提删除跟更新了),加上各种过滤的状况,都不能说是很容易的事,可使用数据绑定的方法,只需要上面数句话就可以轻易完成添加、修改、删除等全部的功况——这简直是逆天的节奏啊!!!

 

(原来在作保存后,作为主键的ID是会自动变成正数的,如下图所示:)

211505764.jpg





  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值