C#网格控件dataGridView(利用List列表和DataTable数据表绑定dataGridView)构建数据表

目录

一.通过DataGridView自己构建数据表

1.1构建DataGridView数据表:

1.2 DataGridView修改的基本操作:

1.3 获取选中行,选中行的字段的值

1.4 添加列的两种情况是可以同时用的

二.List(列表)

1.创建一个类,用于作为list的项

3.将其封装到BindData方法体中设计网格

三.DataTable

1.增加列:先创建列对象,再添加数据

2.增加行(两种)


一.通过DataGridView自己构建数据表

1.1构建DataGridView数据表:

创建列

1.直接通过修改控件DataGridView任务,来编辑列表;

C#网格控件dataGridView(利用List列表和DataTable数据表绑定dataGridView)构建数据表_第1张图片

注意在编辑列表的时候,不仅可以添加文本类,还可以添加其他列;特殊列是可以直接通过属性来显示表中显示的内容: 如 button: 通过 Text 设置默认文本且,userColumnTextForButton:True 才能将内容呈现;不过如果为false,表中呈现的数据就是绑定的数据

C#网格控件dataGridView(利用List列表和DataTable数据表绑定dataGridView)构建数据表_第2张图片

 2.通过代码添加列表

dgv.Columns.Add("id","ID");
// -----------("列头名","别名")

添加行(填充数据)

1.通过 Rows添加行

 dataGridView2.Columns.Add("test","Test");
dataGridView2.Rows.Add(new object[] { "1"});

2.通过DataSource 绑定数据源

        DataSource可以绑定list,datatable; 这里只演示datatable绑定用法,关于list和datatable下面有补充内容(用datatable绑定数据源的时候是不需要添加对应列头的,其列头和datagridview是一一对应的,使用list需要注意属性和datagridview列头的对应

 dt = new DataTable();
 dt.Columns.Add("编号", typeof(int));
 dt.Columns.Add("姓名", typeof(string));
 dt.Columns.Add("年龄", typeof(int));
 dt.Rows.Add(new object[] { 1, "张三", 18 });
 dataGridView1.DataSource = dt;

1.2 DataGridView修改的基本操作:

修改列的显示名称

dgv.Columns["name"].HeaderText="名称";

   隐藏列

dgv.Columns["name"].Visible=false;

    更换列的顺序

 dataGridView2.Columns.Add("test1","Test1");
            dataGridView2.Columns.Add("test2", "Test2");
            dataGridView2.Columns["Test1"].DisplayIndex= 1;

1.3 获取选中行,选中行的字段的值

//获取选中行,方法一
var rows=dgv.SelectedRows; //选中/获取 的行集合
var row=rows[0];           //行集合中的第一个行,即选中行
var row1=dgv.SelectedRows[0];//整合
//获取选中行,方法二
var row=dgv.CurrentRow;//直接获取选中行

//获取选中行的特定字段的值:用的方法2
int id=Convert.ToInt32(row.Cells["id"].Value);
string name=Convert.ToStirng(row.Cells["name"].Value);
//注意:数据类型要对应

//判断是否选中行
if(dgv.SelectedRows.Count<0){}

1.4 添加列的两种情况是可以同时用的

表结构会是:任务来创建的列在前面;代码增加的列在后面;

绑定数据(Add绑定):也会是先绑定 任务创建的列,再绑定代码写的;

当特殊列 userColumnTextForButton:True;(不是所有的特殊列都有)时,绑定数据的时候还是有对应的数据位,只是不会呈现;

dataGridView2.Columns.Add("test1","Test1");
            dataGridView2.Columns.Add("test2", "Test2");
            dataGridView2.Columns["Test1"].DisplayIndex= 1;
            dataGridView2.Rows.Add(new object[] { "1","2","3","4"});

C#网格控件dataGridView(利用List列表和DataTable数据表绑定dataGridView)构建数据表_第3张图片

 注意:使用数据源绑定时,不会出现(先绑定 任务创建的列,再绑定代码写的),因为list和datatable 列名和值都是一一对应的;

推荐使用数据源绑定

二.List(列表)

1.创建一个类,用于作为list的项

//定义一个Class1类
 internal class Class1
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public Class1() { }
        public Class1(string name,int age) {
        Age = age;
            Name = name;
        }
    }

3.将其封装到BindData方法体中设计网格

1.实例化,并添加数据(绑定数据)

List list = null;//推荐放到类外部
list=new List();
 list.Add(new Class1("张三",20));//添加数据
 ist.Add(new Class1("张三", 20));
//注:需要给dataGridView绑定数据源DataSource
this.dataGridView.DataSource= list;//让dataGridView显示内容
//此时数据表列现实点肯定是类的属性名,需要用到  HeaderText属性来更改名字

2.拓宽-直接利用代码更改表中数

 //Rows[0]行  Cells[0]列索引
 //Value获取与此单元格关联的值
this.dataGridView2.Rows[0].Cells[0].Value = "李四";

3.通过按钮button添加数据

在form1中添加按钮

//绑定事件
private void button2_Click(object sender, EventArgs e)
        {
            list.Add(new Class1("王五",10));
            this.dataGridView2.DataSource=null;
            this.dataGridView2.DataSource = list;
        }

三.DataTable

注:包含创建行列,数据添加(行列),数据删除。

1.增加列:先创建列对象,再添加数据


 //增加列头集合----关键字Columns
//dataTable.Columns.Add(column);

  dataTable.Columns.AddRange(new DataColumn[]{
             new DataColumn("学号",typeof(string)),
             new DataColumn("姓名",typeof(string)),
             new DataColumn("年龄",typeof(int)),
             ew DataColumn("性别",typeof(int)),
            });
//或者
 dataTable.Columns.Add("编号", typeof(int));
            dataTable.Columns.Add("姓名", typeof(string));
            dataTable.Columns.Add("年龄", typeof(int));
            dataTable.Columns.Add("性别", typeof(bool));

//设置主键为

//有几个主键就设置多长
DataColumn[] PrimaryKeyColumns = new DataColumn[2];
//添加主键,必须是已经在DataTable里有的列名
PrimaryKeyColumns[0] = dt.Columns["学号"];
PrimaryKeyColumns[1] = dt.Columns["姓名"];
//配置主键
dt.PrimaryKey = PrimaryKeyColumns;


//列头
columns["姓名"].DefaultValue=" ";

2.增加行(两种)

//第一种方法, 直接添加行
  dataTable.Rows.Add(new object[] { "001", "张三", 18, 1});
//第二种先创建  行对象, 再添加到Rows中
 DataRow dataRow = dataTable.NewRow();
             dataRow[0] = "003";
             dataRow[1] = "张四";
             dataRow[2] = 21;
             dataRow[3] = true;
             dataTable.Rows.Add(dataRow);
//行集合关键字 rows

//查询主键等于这个数值的行
DataRow row=rows.Find();

你可能感兴趣的:(C#,c#,.net,开发语言)