Visual Studio 2010 (C#) Windows数据库项目开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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。

② 修改刚添加的记录,单击“保存”按钮,在数据库中验证是否修改了该数据。

③ 删除刚添加的记录,单击“保存”按钮,在数据库中验证是否删除了该数据。