3.1 系部数据维护
3.1.1 创建数据集并添加到系部表
(1)如图3-1所示,在“解决方案资源管理器”中右击Xk项目,选择“添加”下的“新建项”命令。
图3-1 添加新项
(2)如图3-2所示,在“添加新项”对话框中单击“排序依据”右侧的按钮,以小图标的方式查看,这样可在下面看到更多的选项。在“已安装的模板”中选择“数据”选项,中间部分选择“数据集”选项,输入名称为“dsXk.xsd”,单击“添加”按钮。
图3-2 添加数据集
(3)添加了新的数据集后,系统切换到如图3-3所示的界面,单击“服务器资源管理器”超链接。
图3-3 数据集初始界面
(4)如图3-4所示,在“服务器资源管理器”中右击“数据连接”,选择“添加连接”命令。
图3-4 添加连接
(5)如图3-5所示,确保数据源是“Microsoft SQL Server(SqlClient)”。
图3-5 添加连接设置
设置对话框中的参数如下。
① 服务器名:输入“.\SQLEXPRESS”,读者可根据自己的环境进行调整。
② 选中“使用Windows身份验证”单选按钮。
③ 在“选择或输入一个数据库名”下拉列表中选择“Xk”选项。
设置完成后单击“确定”按钮。
如果数据源不是“Microsoft SQL Server(SqlClient)”(没有出现如图3-5所示的界面),则单击“更改”按钮,出现如图3-6所示的对话框,选择“Microsoft SQL Server”选项,单击“确定”按钮后将回到如图3-5所示的界面。
图3-6 更改数据源
(6)在“服务器资源管理器”中展开刚才添加的连接,这里显示为“home\sqlexpress.Xk.dbo”,其中home为编者的机器名称,读者可能显示的不一样。
(7)如图3-7所示,单击“数据连接”下的“home\sqlexpress.Xk.dbo”选项,再单击“表”展开,将“Department”拖放到数据集的设计界面中。
图3-7 将表拖放到数据集中
3.1.2 设计系部信息窗体并维护数据
(1)如图3-8所示,在“解决方案资源管理器”中右击Xk项目,选择“添加”下的“Windows窗体”命令。
图3-8 选择“Windows窗体”命令
(2)如图3-9所示,默认已经选择了“Visual C#项”下的“Windows窗体”,在“名称”文本框中输入“frmDepartment.cs”,单击“添加”按钮。
图3-9 添加名为frmDepartment的Windows窗体
(3)将窗体拉到适当大小,设置窗体的“Text”属性为“系部信息”。
(4)如图3-10所示,选择“数据”菜单下的“显示数据源”命令。
图3-10 选择“显示数据源”命令
(5)如图3-11所示,在“数据源”中确保Department左边的图标为DataGridView状态。如果不是,可单击下拉按钮后选择“DataGridView”选项。
图3-11 确保Department左边的图标为DataGridView状态
(6)如图3-12所示,在“数据源”中拖放“Department”到frmDepartment窗体中。
拖放后,窗体中多了如下控件。
① Xk.dsXk的一个实例dsXk。
② 一个BindingSource,名为departmentBindingSource。
③ Xk.dsXkTableAdapters.DepartmentTableAdapter的实例departmentTableAdapter。
④ Xk.dsXkTableAdapters.TableAdapterManager的实例tableAdapterManager。
图3-12 拖放数据源中的表
⑤ 一个BindingNavigator,名为departmentBindingNavigator。这个控件在窗体中有两种表现形式,另一种形式就是窗体上方的导航条。
(7)窗体中还自动添加了一些代码,我们切换到该窗体的代码形式来观察一下。
在窗体的Load事件中,将根据数据集中的Fill方法将数据加载到数据集中,代码如下。
private void frmDepartment_Load(object sender, EventArgs e) { // TODO: 这行代码将数据加载到表dsXk.Department中,用户可以根据需要移动或删除它 this.departmentTableAdapter.Fill(this.dsXk.Department); }
bindingNavigator1中的departmentBindingNavigatorSaveItem添加了Click事件,单击按钮时将数据集中数据的变化(包括增、删、改)更新到数据库中。反之,如果不单击“保存”按钮,则数据不会更新到数据库中。“保存”按钮的Click事件代码如下。
private void departmentBindingNavigatorSaveItem_Click(object sender, EventArgs e) { this.Validate(); this.departmentBindingSource.EndEdit(); this.tableAdapterManager.UpdateAll(this.dsXk); }
(8)调整DataGridView的列标题,如图3-13所示,单击DataGridView右上角的小三角按钮,选择“编辑列”选项。
(9)如图3-14所示,在左侧选定的列中选中“DepartNo”,在右侧绑定的属性中,设置“HeaderText”为“系部代码”。我们可以看一下DataPropertyName属性已设为“DepartNo”,实际上显示表中的哪一列数据就是由该属性决定的。
图3-13 编辑列
类似地,将DepartName的“HeaderText”设置为“系部名称”,单击“确定”按钮。
图3-14 编辑列标题
(10)在主窗体中加入调用frmDepartment窗体的代码。如图3-15所示,在“解决方案资源管理器”中双击“frmMain”,打开该窗体的设计界面。双击“系部信息”菜单,将生成该菜单的Click事件框架。
图3-15 双击菜单生成其Click事件框架
(11)编写“系部信息”菜单的Click事件代码如下。
private void系部信息ToolStripMenuItem_Click(object sender, EventArgs e) { frmDepartment f =new frmDepartment(); f.MdiParent = this; f.Show(); }
(12)按F5键运行项目,在主窗体中单击“系部信息”菜单,运行效果如图3-16所示。
图3-16 系部信息的运行效果
(13)在不违反数据库相关约束规则的前提下,可做如下测试。
① 添加一条记录,单击“保存”按钮,在数据库中验证是否加入了该数据。
② 修改刚添加的记录,单击“保存”按钮,在数据库中验证是否修改了该数据。
③ 删除刚添加的记录,单击“保存”按钮,在数据库中验证是否删除了该数据。