- Visual Studio 2010 (C#) Windows数据库项目开发
- 曾建华主编
- 1647字
- 2020-08-28 18:04:41
3.2 班级数据维护
3.2.1 修改数据集并添加到班级表
(1)如图3-17所示,在“解决方案资源管理器”中双击“dsXk.xsd”项目编辑数据集。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-17.jpg?sign=1739354596-Q7I0QDIjV72lj3Z9RnmevuIyYmZfHYwC-0-7a22688997864c0fd608f02f414834d8)
图3-17 编辑数据集
(2)如图3-18所示,在“服务器资源管理器”(如果看不到,可单击“视图”菜单下的“服务器资源管理器”命令)中展开“数据连接”下的“home\sqlexpress.Xk.dbo”,展开“表”,将“Class”拖放到数据集的设计界面中。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-18.jpg?sign=1739354596-0crOFX6CCqB0iFvtoY98UoIGGGysclAB-0-e17d62bb77586d98c352fe3a66f5af41)
图3-18 将Class表拖放到数据集中
(3)系统将根据数据库中主外键的关系在数据集中添加对应的关系。
在这里我们可看到数据集的Class数据表和Department数据表之间有一个箭头,双击箭头可查看该关系的详细设置,如图3-19所示。
尽管数据集和数据库之间通常是具备对应关系的,但两者之间是可以独立设计的。当然,通常我们不需要这样做。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-19.jpg?sign=1739354596-f7145HPPR43fxJnsJdBM8DjNlALtNnMO-0-ed609b75d839fb05ec05385db7f668f9)
图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所示。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-20.jpg?sign=1739354596-6ErnQHiaUkszSh0jfzDAlWOJTyeLNI0F-0-186a697aa95b6b3051611c0d016acd6a)
图3-20 班级信息的运行效果
下面我们进一步完善系统。班级所在的系部现在显示的是系部代码,如果显示为对应的班级名称,这样用户才感觉更直观。修改数据时,从系部名称里挑选一个系部也比直接输入系部代码方便,而且也不会出错,下面我们就将做这方面的改进。
(8)如图3-21所示,单击“DataGridView任务”,选择“编辑列”选项。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-21.jpg?sign=1739354596-KT0HEJvJIq9Xnb3kfMOzTvKfUeW6Bioz-0-26949d055be2fa392b4b14767319c480)
图3-21 编辑列
(9)如图3-22所示,在左侧选定的列中选中“DepartNo”,在右侧绑定的属性中,设置“ColumnType”为“DataGridViewComboBoxColumn”,表明该列显示为下拉列表。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-22.jpg?sign=1739354596-BNbEroUL5OHLXPec8gSaINze83xm3Md5-0-332d4be3df0435738da08420c972b4da)
图3-22 设置列显示为下拉列表
(10)如图3-23所示,设置“DataSource”为“Department”。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-23.jpg?sign=1739354596-eBeRBbylPCDFR97jJPExWZqnps0eO25V-0-0c58f6bfd0b09571fc73b6fee75be88e)
图3-23 设置DataSource
如图3-24所示,经过这样的操作,从图中间最下方可以看到,系统自动添加了一个departmentBindingSource控件。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-24.jpg?sign=1739354596-Nb6180IM5dHolhYzGPoxegTUi1LwCQ9I-0-0d464fc3fde841b3a50318469724dfbd)
图3-24 系统自动添加了一个departmentBindingSource控件
再次单击“DataSource”下拉按钮时选择“departmentBindingSource”选项即可。如果继续像图3-23那样操作的话,系统会再添加一个类似departmentBindingSource的控件,这样不太好。
(11)如图3-25所示,设置“DisplayMember”为“DepartName”。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-25.jpg?sign=1739354596-PrQabVAGjSKdw3a7uyGQbfOCtynpG8JJ-0-8e0fcaa26439ccdb46d6ee55f3af2021)
图3-25 设置DisplayMember
(12)如图3-26所示,设置“ValueMember”为“DepartNo”。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-26.jpg?sign=1739354596-WsVivUWhghAUFTQirRtA7c25Hi40CqQy-0-82c1a16f81e6012a937f50d38bb200d7)
图3-26 设置ValueMember
以上几步操作的意思是:下拉列表中将显示为系部名称,系部表中有很多系部,系统将根据班级表中的DepartNo在Department表中找到对应的DepartName显示出来;更新数据时,也会将下拉列表中我们看到的DepartName对应的DepartNo更新到Class表中。
(13)调整列标题分别为“班级代码”、“所在系部”、“班级名称”,如图3-27所示。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-27.jpg?sign=1739354596-XVUghCchnJQyk0VLcJOaXI7PBHiI3EIf-0-a3042beb126d96d055549bfcbfe37a4e)
图3-27 设置列标题
(14)如图3-28所示,读者可自行设置各列的宽度,即“Width”属性的值。
需要注意的是,DataGridView中列的宽度不能通过拖拉的方式进行调整。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-28.jpg?sign=1739354596-bG0cVp0DUz7ZhnWuykNG9WRMdM7bFETY-0-20ae53e9c97421f9b9e4e99fa3082b97)
图3-28 设置列宽
(15)如图3-29所示,设置“所在系部”的“DisplayStyle”为“Nothing”。此样式在浏览时为普通的文本框,进入编辑模式时变为下拉列表框。
默认的“DropDownButton”则不管是浏览还是编辑时都显示为下拉列表框。
编者认为设为“Nothing” 的情形更多一些。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-29.jpg?sign=1739354596-Vd2oHE4yimT2hKSqSHUuuwC7W4nRTcb3-0-b1acc84da3b28727d7fc6c779c52a37b)
图3-29 设置DisplayStyle
(16)单击“确定”按钮完成列的设置。
(17)在主窗体中单击“班级信息”菜单,现在的运行效果如图3-30所示。可以看到“所在系部”列显示为文本框。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-30.jpg?sign=1739354596-jznmoJdl7VqkZMHssxYLFChEVfTRvrGl-0-25cb4c1c1142f61de72721ff43fa7d60)
图3-30 “班级信息”窗体的运行效果
(18)如图3-31所示,随便在一个数据行单击“所在系部”下的单元格,可以看到出现下拉按钮,以让用户在下拉列表中选择新的值。
![](https://epubservercos.yuewen.com/479A39/3590270304425901/epubprivate/OEBPS/Images/Figure-0003-31.jpg?sign=1739354596-khq0GRfzXAbb9DLed3VQjpJT0Tj91D22-0-6479cd4483684df347cc97d144e65cda)
图3-31 “所在系部”列编辑单元格时显示为下拉列表框
(19)在不违反数据库相关约束规则的前提下,可做如下测试。
① 添加一条班级记录,其中系部可在下拉列表中进行选择,单击“保存”按钮,在数据库中验证是否加入了该数据。验证一下DepartNo是否为下拉列表中选择的DepartName对应的DepartNo。
② 修改刚添加的记录,单击“保存”按钮,在数据库中验证是否修改了该数据。
③ 删除刚添加的记录,单击“保存”按钮,在数据库中验证是否删除了该数据。