首页 > 编程笔记 > C#笔记 阅读:12

C# DataGridView控件的用法(附带实例)

DataGridView 控件又被称为数据表格控件,它提供一种强大而灵活的以表格形式显示数据的方式。

将数据绑定到 DataGridView 控件非常简单、直观,在大多数情况下,只需设置 DataSource 属性即可。另外,DataGridView 控件具有极高的可配置性和可扩展性,它提供大量的属性、方法和事件,可以用来对该控件的外观和行为进行自定义。

当需要在 Windows 窗体应用程序中显示表格数据时,首先考虑使用 DataGridView 控件。下图为 DataGridView 控件:


图 1 DataGridView控件

拖放到窗体中的效果如图 2 所示:


图 2 DataGridView控件在窗体中的效果

DataGridView 控件的常用属性及说明如下表所示:

表:DataGridView控件的常用属性及说明
属性 说明
Columns 获取一个包含控件中所有列的集合
CurrentCell 获取或设置当前处于活动状态的单元格
CurrentRow 获取包含当前单元格的行
DataSource 获取或设置 DataGridView 所显示数据的数据源
RowCount 获取或设置 DataGridView 中显示的行数
Rows 获取一个集合,该集合包含 DataGridView 控件中的所有行

DataGridView 控件的常用事件及说明如下表所示:

表:DataGridView 控件的常用事件及说明
事件 说明
CellClick 在单击单元格的任意部分时发生
CellDoubleClick 在双击单元格中的任意位置时发生

下面通过一个实例看一下如何使用 DataGridView 控件,该实例主要实现的功能有:禁止在 DataGridView 控件中添加/删除行、禁用 DataGridView 控件的自动排序、使 DataGridView 控件隔行显示不同的颜色、使 DataGridView 控件选中的行呈现不同的颜色和选中 DataGridView 控件中的某行时,将其详细信息显示在 TextBox 文本框中。

【实例】DateGridView 控件综合应用。创建一个 Windows 应用程序,在默认窗体中添加两个 TextBox 控件和一个 DataGridView 控件,其中,TextBox 控件用来显示选中记录的版本和价格信息,DataGridView 控件用来显示数据表中的数据,代码如下:
// 定义数据库连接字符串
string strCon = "Server=XIAOKE;User Id=sa;Pwd=;Database=db_EMS";
SqlConnection sqlcon;  // 声明数据库连接对象
SqlDataAdapter sqlda;  // 声明数据库桥接器对象
DataSet myds;  // 声明数据集对象

private void Form1_Load(object sender, EventArgs e)
{
    dataGridDiew.AllowUserToAddRows = false;  // 禁止添加行
    dataGridDiew.AllowUserToDeleteRows = false;  // 禁止删除行
    sqlcon = new SqlConnection(strCon);  // 创建数据库连接对象
    // 获取数据表中的所有数据
    sqlda = new SqlDataAdapter("select * from tb_PDic", sqlcon);
    myds = new DataSet();  // 创建数据集对象
    sqlda.Fill(myds);  // 填充数据集
    dataGridDiew.DataSource = myds.Tables[0];  // 为dataGridView指定数据源
    // 禁用DataGridView控件的排序功能
    for (int i = 0; i < dataGridDiew.Columns.Count; i++)
    {
        dataGridDiew.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
    }
    // 设置SelectionMode属性为FullRowSelect,使控件能够整行选择
    dataGridDiew.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    // 设置DataGridView控件中的数据以各行换色的形式显示
    foreach (DataGridViewRow dgvRow in dataGridDiew.Rows)  // 遍历所有行
    {
        if (dgvRow.Index % 2 == 0)  // 判断是否是偶数行
        {
            // 设置偶数行颜色
            dataGridDiew.Rows[dgvRow.Index].DefaultCellStyle.BackColor = Color.LightSalmon;
        }
        else  // 奇数行
        {
            // 设置奇数行颜色
            dataGridDiew.Rows[dgvRow.Index].DefaultCellStyle.BackColor = Color.LightPink;
        }
    }
    dataGridDiew.ReadOnly = true;  // 设置dataGridView控件的ReadOnly属性,使其为只读
    // 设置dataGridView控件的DefaultCellStyle.SelectionBackColor属性,使选中行的颜色发生变化
    dataGridDiew.DefaultCellStyle.SelectionBackColor = Color.LightSkyBlue;
}

private void dataGridDiew_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex >= 0)  // 判断选中行的索引是否大于0
    {
        // 记录选中的ID号
        int intID = (int)dataGridDiew.Rows[e.RowIndex].Cells[0].Value;
        sqlcon = new SqlConnection(strCon);  // 创建数据库连接对象
        // 执行SQL查询语句
        sqlda = new SqlDataAdapter("select * from tb_PDic where ID=" + intID + "", sqlcon);
        myds = new DataSet();  // 创建数据集对象
        sqlda.Fill(myds);  // 填充数据集
        if (myds.Tables[0].Rows.Count > 0)  // 判断数据集中是否有记录
        {
            textBox1.Text = myds.Tables[0].Rows[0][1].ToString();  // 显示版本
            textBox2.Text = myds.Tables[0].Rows[0][2].ToString();  // 显示价格
        }
    }
}
程序运行结果为:


图 3 DataGridView 控件的使用

相关文章