3.2 班级数据维护
3.2.1 修改数据集并添加到班级表
(1)如图3-17所示,在“解决方案资源管理器”中双击“dsXk.xsd”项目编辑数据集。
图3-17 编辑数据集
(2)如图3-18所示,在“服务器资源管理器”(如果看不到,可单击“视图”菜单下的“服务器资源管理器”命令)中展开“数据连接”下的“home\sqlexpress.Xk.dbo”,展开“表”,将“Class”拖放到数据集的设计界面中。
图3-18 将Class表拖放到数据集中
(3)系统将根据数据库中主外键的关系在数据集中添加对应的关系。
在这里我们可看到数据集的Class数据表和Department数据表之间有一个箭头,双击箭头可查看该关系的详细设置,如图3-19所示。
尽管数据集和数据库之间通常是具备对应关系的,但两者之间是可以独立设计的。当然,通常我们不需要这样做。
图3-19 数据集中表之间的关系
3.2.2 设计班级信息窗体并维护数据
(1)在项目中添加新的Windows窗体,命名为“frmClass”。
(2)将窗体拉到适当大小,设置窗体的Text属性为“班级信息”。
(3)打开“数据源”,如果看不到,可单击“数据”菜单下的“显示数据源”命令。
(4)在“数据源”中确保Class左边的图标为DataGridView状态。如果不是,可单击Class右侧的下拉按钮,选择“DataGridView”选项。
(5)在“数据源”中拖放“Class”到frmClass窗体中。
(6)在主窗体中加入调用Class窗体的代码。
在“解决方案资源管理器”中双击frmMain项目,打开该窗体的设计界面。双击“班级信息”菜单,为该菜单编写Click事件,代码如下。
private void班级信息ToolStripMenuItem_Click(object sender, EventArgs e) { frmClass f = new frmClass(); f.MdiParent = this; f.Show(); }
(7)在主窗体中单击“班级信息”菜单,现在的运行效果如图3-20所示。
图3-20 班级信息的运行效果
下面我们进一步完善系统。班级所在的系部现在显示的是系部代码,如果显示为对应的班级名称,这样用户才感觉更直观。修改数据时,从系部名称里挑选一个系部也比直接输入系部代码方便,而且也不会出错,下面我们就将做这方面的改进。
(8)如图3-21所示,单击“DataGridView任务”,选择“编辑列”选项。
图3-21 编辑列
(9)如图3-22所示,在左侧选定的列中选中“DepartNo”,在右侧绑定的属性中,设置“ColumnType”为“DataGridViewComboBoxColumn”,表明该列显示为下拉列表。
图3-22 设置列显示为下拉列表
(10)如图3-23所示,设置“DataSource”为“Department”。
图3-23 设置DataSource
如图3-24所示,经过这样的操作,从图中间最下方可以看到,系统自动添加了一个departmentBindingSource控件。
图3-24 系统自动添加了一个departmentBindingSource控件
再次单击“DataSource”下拉按钮时选择“departmentBindingSource”选项即可。如果继续像图3-23那样操作的话,系统会再添加一个类似departmentBindingSource的控件,这样不太好。
(11)如图3-25所示,设置“DisplayMember”为“DepartName”。
图3-25 设置DisplayMember
(12)如图3-26所示,设置“ValueMember”为“DepartNo”。
图3-26 设置ValueMember
以上几步操作的意思是:下拉列表中将显示为系部名称,系部表中有很多系部,系统将根据班级表中的DepartNo在Department表中找到对应的DepartName显示出来;更新数据时,也会将下拉列表中我们看到的DepartName对应的DepartNo更新到Class表中。
(13)调整列标题分别为“班级代码”、“所在系部”、“班级名称”,如图3-27所示。
图3-27 设置列标题
(14)如图3-28所示,读者可自行设置各列的宽度,即“Width”属性的值。
需要注意的是,DataGridView中列的宽度不能通过拖拉的方式进行调整。
图3-28 设置列宽
(15)如图3-29所示,设置“所在系部”的“DisplayStyle”为“Nothing”。此样式在浏览时为普通的文本框,进入编辑模式时变为下拉列表框。
默认的“DropDownButton”则不管是浏览还是编辑时都显示为下拉列表框。
编者认为设为“Nothing” 的情形更多一些。
图3-29 设置DisplayStyle
(16)单击“确定”按钮完成列的设置。
(17)在主窗体中单击“班级信息”菜单,现在的运行效果如图3-30所示。可以看到“所在系部”列显示为文本框。
图3-30 “班级信息”窗体的运行效果
(18)如图3-31所示,随便在一个数据行单击“所在系部”下的单元格,可以看到出现下拉按钮,以让用户在下拉列表中选择新的值。
图3-31 “所在系部”列编辑单元格时显示为下拉列表框
(19)在不违反数据库相关约束规则的前提下,可做如下测试。
① 添加一条班级记录,其中系部可在下拉列表中进行选择,单击“保存”按钮,在数据库中验证是否加入了该数据。验证一下DepartNo是否为下拉列表中选择的DepartName对应的DepartNo。
② 修改刚添加的记录,单击“保存”按钮,在数据库中验证是否修改了该数据。
③ 删除刚添加的记录,单击“保存”按钮,在数据库中验证是否删除了该数据。