在Windows中绑定是将操作界面和数据源的数据保持一致,即实现操作界面的增删改查与数据库的增删改查一致,这里所说的数据源指数据集或数据表,而窗体可以是Windows窗体或Web窗体,在这里,我们研究关于Windows窗体的数据绑定,一般分为两种类型:简单绑定和复杂绑定。简单绑定是指将一个控件的某个属性绑定到某个数据元素(如数据集表中列的值)的能力,这是用于TextBox或Label等控件的典型绑定类型。复杂绑定指将一个控件绑定到多个数据元素的能力,通常绑定到数据库的多条记录,如DataGridView就可以绑定到一个DataTable,一次显示多条记录和多个字段的值。
重点:
Ø 掌握 DataGridView 控件的使用
Ø DataGridView常用属性和方法
Ø 简单绑定
Ø 利用绑定控件从数据源读取数据
预习功课:
Ø 如何使用DataGridView
Ø DataGridView常用属性和方法
Ø 简单绑定
5.1 DataGridView控件
在项目开发中,怎么样将数据库的中数据显示到界面上呢?在.Net中提供了DataGridView控件使我们可以显示表格数据,DataGridView控件除了可以直接显示数据表数据外,还支持排序、数据绑定以及创建自己的单元格类型、自定义控件外观等高级功能。
DataGridView控件里面的数据通常是使用绑定的方式提供的,比如你可以把DataGridView控件绑定到数据集中的数据表,那么DataGridView控件就会自动显示这个数据表中的数据,如上图,我们就是这样操作的。另外,DataGridView控件的绑定功能是非常强大的,它不仅可以绑定数据表,还可以绑定数据集、数据视图、集合、数组等。
5.1.1 DataGridView的属性和方法
DataGridView控件常用的重要属性和事件
属性
说明
Columns
包含的列的集合
DataSource
DataGridView 的数据源
ReadOnly
是否可以编辑单元格
DataPropertyName
绑定的数据列的名称
HeaderText
列标题文本
Visible
指定列是否可见
Frozen
指定水平滚动DataGridView时列是否移动
ReadOnly
指定单元格是否为只读
ColumnCount
DataGridView中显示的列数
RowCount
DataGridView中显示的行数
Rows
所有控件的行
CurrentCell
当前单元格
CurrentRow
当前单元格的行
SelectedRows
用户选定的行
DataMember
数据源绑定的数据集,这里是数据表的名称
DefaultCellStyle
单元格的默认外观样式
事件
说明
CurrentCellChanged
单击单元格时发生
CellContentClick
单击某个单元格时发生
从窗体设计工具箱窗口的“数据”卡片中拖一个DataGridView控件进窗体设计区域即可创建一个DataGrid控件对象。然后可以在DataGridView控件属性窗口设置控件相关的属性,除了上面表格提到的属性外,在DataGridView控件的属性窗口中我们还可以看到很多其他常用的属性,比如:
l Dock属性:可以设置控件填充父容器的方式
l ReadOnly属性:设置控件是否可编辑,设置false后,控件将不可编辑
l RowHeaderVisible属性:列标题是否显示,默认情况下显示列标题
l MultiSelect属性:是否允许选择多行
5.1.2 将DataGridView绑定到数据集
将DataGridView属性绑定到数据源,通过设置其DataSource属性,可将DataGridView控件直接绑定到数据源,数据源可以是数组、集合或数据集。通过DataSource属性将DataGridView控件绑定到数据集通常有三种形式:
一. 直接绑定数据表 dataGridView1.DataSource=ds.Tables[0]; 二. 绑定数据表的数据视图 dataGridView.DataSource=ds.Tables[0].DefaultView; 三. 绑定到数据集 dataGridView.DataSource=ds; dataGridView.DataMember=ds.Tables[0].TableName;
在第三种方式中,我们知道DataGridView控件每次只能显示一个数据表,所以你一旦绑定了一个数据集,那么你必须使用DataMember属性指定DataGridView控件显示到底是数据集里面的哪个表,因此要给DataMember属性设置一个数据集中数据表的名称。
5.1.3 定制DataGridView控件
DataGridView控件默认情况下允许进行编辑、支持自动排序、支持选择模式、调整列间距等操作,用户可以在列标题上单击该列进行排序,排序时会根据列的不同类型进行排序,如果该列是数字那么就按大小排序,如果是字符那么就按字符顺序排序。用户可以自己设置单选、多行选择等选择模式,以便方便地选中列表中的数据。用户还可以在标题之间的列分隔符上双击,使左边的列自动按照单元格的内容展开或收缩。
下面是DataGridView控件的组成图(图15.9),我们将依据这幅组成图来详细讨论DataGridView单元格值的获取以及单元格、行、列等外观的设置。
DataGridViewColumn
RowHeaders
Columns
DataGridViewRow
DataGridViewCell
DataGridView控件的构成类似于表格的构成,简单地讲分成行和列。DataGridView控件每一行都是一个DataGridViewRow对象,每一行中按照列划分为很多单元格,每一个单元格就是一个DataGridViewCell对象。除了行和列外,DataGridView控件还有列标题和行标题,列标题和行标题没有对应的类,但DataGridView控件中有很多属性可以设置这两个组成部分的外观。
你可以像获取数据表数据那样获取DataGridView控件中任意一个单元格的数据,因为DataGridView控件中表示行的集合也是Rows,在每一行对象(DataGridViewRow对象)中又有一个Cell属性可以获取该行的某一列。可以使用如下代码遍历DataGridView控件中的全部数据:
foreach(DataGridViewRow r in this.dataGridView.Rows) { //打印每一个单元格值 for(int i=0;i关注打赏