DataGridView 表格数据控件

DataGridView 表格数据控件

DataGridView 是一个用来显示表格数据的控件,类似 HTML 里的 table。

DataGridView 可以绑定的数据格式有 List<T>、DataTable、DataSet 等。

动态创建 DataTable 并绑定

private void button7_Click(object sender, EventArgs e)
{
    DataTable dt = new DataTable("Student"); // DataTable对象,表名为Student

    // 开始增加列头
    dt.Columns.Add("编号", typeof(Int32));
    dt.Columns.Add("姓名", typeof(String));
    dt.Columns.Add("成绩", typeof(String));

    // 开始增加行数据
    DataRow row = dt.NewRow();
    row[0] = 1;
    row[1] = "张";
    row[2] = "98";
    dt.Rows.Add(row); // 向DataTable增加第一行记录

    row = dt.NewRow();
    row[0] = 2;
    row[1] = "李";
    row[2] = "78";
    dt.Rows.Add(row); // 向DataTable增加第二行记录

    // 设置DataTable的主键
    dt.PrimaryKey = new DataColumn[]
    {
        dt.Columns[0]
    };

    this.dataGridView1.DataSource = dt;
}Code language: JavaScript (javascript)

点击按钮后,DataGridView 会自动显示 DataTable 中的所有数据,列头对应 DataTable 的列名。

绑定 List<T>

class Student
{
    public int 编号 { get; set; }
    public string 姓名 { get; set; }
    public string 成绩 { get; set; }
}

private void button7_Click(object sender, EventArgs e)
{
    List<Student> list = new List<Student>();
    list.Add(new Student { 编号 = 1, 姓名 = "张", 成绩 = "98" });
    list.Add(new Student { 编号 = 2, 姓名 = "李", 成绩 = "78" });

    this.dataGridView1.DataSource = list;
}Code language: JavaScript (javascript)

常用属性

属性说明
DataSource数据源,绑定后自动生成列和行
AutoGenerateColumns是否自动根据数据源生成列(默认 true)
Columns列集合,可手动配置列
Rows行集合
ReadOnly是否只读
AllowUserToAddRows是否允许用户新增行
AllowUserToDeleteRows是否允许用户删除行
SelectionMode选择模式(单元格、行、整行等)
MultiSelect是否允许多选

常用事件

事件说明
CellClick单元格被点击
CellDoubleClick单元格被双击
SelectionChanged选中项改变
CellValueChanged单元格值改变
RowHeaderMouseClick行头被点击

获取选中行数据

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex >= 0)
    {
        DataGridViewRow row = dataGridView1.Rows[e.RowIndex];
        string name = row.Cells["姓名"].Value.ToString();
        MessageBox.Show(name);
    }
}Code language: JavaScript (javascript)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注