第三课 DataGridView控件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三 DataGridView的属性和数据banding

DataGridView与数据库操作(1)

要点:

1、DataGridView的数据绑定(按钮的点击事件)

2、DataGridView样式设置:不可编辑、自动填充、中文列标题、交替行

3、新增部门信息——弹出新窗体,并传递部门编号

4、新增部门信息——部门经理的下拉列表

5、新增部门信息——保存到数据库

基本信息管理主界面如图所示

先来实现点击上面按钮后能绑定数据到DataGridView中

1、DataGridView的数据绑定(部门信息按钮的点击事件)

(1)给本界面的cs文件添加using引用

using System.Data.SqlClient;

using NorthwindDAL;

(2)为datagridView添加数据源属性

DataSet ds= SqlHelper.ExecuteDataset(SqlHelper.GetConnSting(),CommandType.Text,"SELECT * FROM 部门表");

dataGridView.DataSource = ds.Tables[0];

绑定完成后,为了保证测试方便,我们临时更改一下启动窗体

运行一下就能看到现在的界面,点击信息部门按钮看看是否能加载部门表。

其他按钮的表格绑定以此类推。

我们发现了几个问题:

1)部门信息是可以任意编辑但是不影响数据库。能否让这个控件不能编辑?

2)部门信息的数据列比较少,能否自动填充整个窗体?

3)雇员信息的列标题是英文,能否翻译成中文?

4)雇员信息字段很多,需要拉动水平滚动条才能看完,能否只显示关键的列?

5)客户信息记录很多,容易看错行,能否设置交错行?

6)产品类别的描述字段内容很多,能否完全显示?

这些都是对datagridView的样式要求啦,一起来看看怎么定制这个控件的效果。

2、DataGridView样式设置

1)部门信息是可以任意编辑但是不影响数据库。能否让这个控件不能编辑?

回到设计界面,对控件属性进行相应的设置

AllowUserToAddRows——是否允许用户自动增加新行EditMode——EditProgrammatically,只允许从代码进行编辑

ReadOnly——只读模式

注意:对datagridView控件的设置是会影响所有加载到这个控件的数据的。

2)部门信息的数据列比较少,能否自动填充整个窗体?

控件的属性设置可以放在代码内完成,只要点击过这个按钮,所有的按钮显示数据都会记住这个属性,因此可以在设计界面中设置自动填充,如果有特殊要求的再到代码中设置

比如设置了行高自动调整,则产品类别中显示效果

但是与此同时,雇员的显示效果就很差

这时可以在雇员信息的点击按钮内加上列宽的设置

dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;

列宽与行高的设置请参考延伸知识。注意关于性能:

通过AutoSizeColumnsMode 或者AutoSizeRowsMode 属性所指定的单元格进行自动调整时,如果调整次数过多那么将可能导致性能下降,尤其是在行和列数比较多的情况下。在这时用DisplayedCells 代替AllCells 能减少非所见的单元格的调整,从而提高性能。

3)雇员信息的表头是英文,能否翻译成中文?

方法一:用SQL语句转换,也就是说SELECT Name as 姓名FROM ……

方法二:循环设置所有的列

方法三:直接用中文名作数据库的字段名吧,一劳永逸

4)雇员信息字段很多,需要拉动水平滚动条才能看完,能否只显示关键的列?方法一:还是SQL语句的问题,这个自己考虑

方法二:把已经显示出来的列隐藏掉,对于代码是可用的,但对用户是不可见的

注意:这里的[]内使用的是数据库中的字段名称,不是刚刚的中文列标题

5)客户信息记录很多,容易看错行,能否设置交错行?可否设置选中行样式?

6)产品类别的图片能否完全显示?

其实刚刚已经讲了,还记得吗?设置什么?

延伸知识:内容填充

行高的自动调整

DataGridView行的高度自动调整,可以使用DataGridView1.AutoSizeRowsMode 属性实现。

//根据Header和所有单元格的内容自动调整行的高度

DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; DataGridViewAutoSizeRowsMode枚举的成员如下所示:

好了,到目前为止,我们已经可以比较专业的显示出数据库的数据。下一步是增加部门信息了。

请大家先设计一个新增部门信息的窗体,注意属性与控件类型。

4、基本信息管理模块——新增部门信息

难点:弹出新窗口、自动生成最大的编号、部门经理的下拉列表,保存到数据库

(1)点击新增按钮后弹出新增部门信息的窗体

跟上次一样,申明一个新的窗体对象后,使用show的方法即可。

Form新增部门信息= new新增部门信息();

新增部门信息.Show();

(2)弹出窗口后自动生成部门编号

我们不满足于此,我们需要能找到当前数据库中的最大编号,然后递增1作为新部门的编号出现在新窗体,且这个编号是用户不能手动修改。

还是写个方法GenerateNew部门编号吧。

(3)所有雇员都出现在下拉列表里面

相关文档
最新文档