码迷,mamicode.com
首页 > Windows程序 > 详细

C#二十八 数据绑定

时间:2016-05-13 00:57:30      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:

在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<r.Cells.Count;i++)

       {

           Console.WriteLine(r.Cells[i].Value);

}

}

 

要想获得你选中的某一行或某一列单元格的值,就需要用到前面提到的CurrentRow和CurrentCell两个属性,分别返回选中的行对象和返回选中的单元格对象。通过这两个属性可以找到需要的单元格的值。例如:

privatevoid dataGridView_CurrentCellChanged(object sender,EventArgs e)

{

    //获取当前选中单元格的列标

    intN=this.dataGridView.CurrentCellAddress.X;

    //获取当前行列标为N的那个单元格的值

    stringval=this.dataGridView.CurrentRow.Cells[N].Value.ToString();

    //直接使用CurrentCell来获得选中单元格的值

    //stringval=this.dataGridView.CurrentCell.Value.ToString();

}

 

DataGridView控件提供了CurrentCellAddress属性来获得选中单元格的列表和行标,如下代码修改DataGridView中选中的单元格中对应表中项的值:

privatevoid dataGridView_CellContentClick(object sender,DataGridViewCellEventArgs e)

{

    //获得绑定的数据表

    DataTabledt=(DataTable)this.dataGridView.DataSource;

    int x=dataGridView.CurrentCellAddress.X; //获得行标

    int y=dataGridView.CurrentCellAddress.Y; //获得列标

    //显示当前单元格的值

    MessageBox.Show(this.dataGridView.Rows[x].Cells[y].Value.ToString());//

    //修改此单元格对应的数据表中项的值

    dt.Rows[x][y]=”修改值”;

//更新到数据库

adapter.Update(dt);

dt.AcceptChanges();

}

 

DataGridView除了提供灵活的数据访问和编辑功能外,还提供强大的外观设置功能,设置DataGridView控件的外观也是按照上图提示的DataGridView控件的组成而来的。算起来我们总共可以从五个方面设置DataGridView的外观,分别是行外观、列外观、行标题外观、列标题外观和总外观。下面分别从如下五个方面进行讨论:

 

n       总外观设置

BackgroundColor:设置其背景颜色

BorderStyle:设置边框样式

CellBorderStyle:设置其单元格边框样式

DefaultCellStyle:设置单元格具体样式(字体颜色、字体种类、对齐方式和数据格式等)

GridColor:设置网格线颜色

n       列标题外观

ColumnHeadersBorderStyle:设置列标题的边框样式

ColumnHeadersDefaultCellStyle:设置列标题样式

ColumnHeadersHeight:设置列标题的高度

ColumnHeadersVisible:设置列标题是否显示

n       行标题外观

RowHeadersBorderStyle:设置行标题的边框样式

RowHeadersDefaultCellStyle:设置默认行标题样式

RowHeadersWidth:设置行标题列的宽度

RowHeadersVisible:设置行标题是否显示

n       行外观

RowTemplate:设置一个行模板,从而达到设置行外观的目的

RowsDefaultCellStyle:设置该行的字体颜色、字体种类、对其方式和数据格式等

n       列外观

DataGridView控件的列外观在其Columns属性设置。在Columns属性里面你可以对每一列进行外观的设置。每一列都含有Width、ColumnType、DefaultCellStyle等属性。其中每一列的Width属性可以设置列宽。

DefaultCellStyle:设置该列单元格的属性(字体颜色、字体种类、对齐方式和数据格式等)

ColumnType:设置单元格的类型,包含六种类型:DataGridViewButtonColumn、DataGridViewCheckBoxColumn、DataGridViewComboBoxColumn、DataGridViewImageColumn、DataGridViewTextBoxColumn、DataGridViewLinkColumn

C#二十八 数据绑定

标签:

原文地址:http://blog.csdn.net/zhangchen124/article/details/51345118

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!