30天学通C#项目案例开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.2 使用Windows Forms开发数据库应用程序

.NET Framework 2.0之后的版本对于Windows Forms开发数据绑定进行了增强,改进了对数据绑定的支持,提供了强大的BindingSoruce控件,增强的强类型功能以及局布类的出现,使得在强类型中编写自定义逻辑不用担心有被覆盖的危险。本节以一个简单的实例,演示了如何以尽量少的代码或者是不需要代码,创建一个具有增、删、改功能的应用程序,创建步骤如下所示。

① 新建一个DataAppDemo的Windows窗体应用程序,设置其Title为“AdventureWorks联系人”,设置其Name属性为FrmMain。

② 选择VS 2008主菜单的“数据”|“显示数据源”命令,将显示一个数据源窗口。单击“添加数据源”链接,即弹出一个向导窗口,在向导窗口的数据源类型中选择“数据库”选项,单击“下一步”按钮,再在选择数据源窗口中创建一个连接到AdvantureWorks数据库的数据连接。单击“下一步”按钮将连接保存到配置文件中,再次单击“下一步”按钮,在“选择数据库对象”页面中,选择Contact数据表,如图1.23所示。在“DataSet”名称文本框中,指定数据集的名称为AdventureWorksDataSet,单击“完成”按钮完成数据源的添加。

图1.23 选择Contact数据表

③ 在数据源窗口中,选中AdventureWorksDataSet数据集的Contact表,将它拖到文档窗口的主窗体上。VS 2008将会自动添加一个DataGridView控件、一个BindingNavigator控件、以及AdventureWorksDataSet、BindingSource和TableAdapter控件。

④ 在数据源窗口选中Contact表,单击下拉箭头选择“详细信息”项,然后再将Contact拖动到窗体上,VS 2008会为控件产生详细信息控件。经过简单的编排后,就可以按下F5键运行程序。可以看到一个简单的具有增、删、改功能的窗体已经做完了,用户可以编辑联系人、删除联系人或添加新的联系人,用户界面如图1.24所示。

图1.24 联系人编辑窗口

当在DataGridView控件中单击不同的记录行时,详细信息文本框控件会自动地进行同步,用户可以直接在文本框中更改信息。单击“保存”按钮后,将会保存信息,也可以单击“新增”按钮,新增一条记录,然后单击保存按钮,保存联系人信息。VS 2008自动添加了在窗体加载时填充数据集的代码,以及保存到数据库中的代码,如下所示。

代码位置:见光盘中本章源代码的Form1.cs类。

01         private void contactBindingNavigatorSaveItem_Click(object sender,EventArgse)
02         {
03            this.Validate();                      //进行验证工作
04            this.contactBindingSource.EndEdit();  //提交验证更改
05            this.tableAdapterManager.
                                  //用TableAdapterManager的UpdateAll方法更新记录
06               UpdateAll(this.adventureWorksDataSet);
07         }
08         private void FrmMain_Load(object sender, EventArgs e)
09         {
10            this.contactTableAdapter.Fill         //填充记录
11               (this.adventureWorksDataSet.Contact);
12         }

● 第03行代码调用窗体Validate()方法进行验证工作。

● 第04行代码将用户在窗体上所做的更改提交给BindingSource。

● 第05~06行代码调用了TableAdapterManager的UpdateAll()方法,向数据库提交对数据集的更改。

● 第08~12行代码的Load事件处理代码调用了contactTableAdapter的Fill()方法填充了数据表,这样用户界面有数据得以显示。

Windows Froms改进型的DataGridView控件提供了大量的定制特性,相较于其前一个版本的DataGrid控件,在功能性和易用性都有了明显的提升。