目录
一.通过DataGridView自己构建数据表
1.1构建DataGridView数据表:
1.2 DataGridView修改的基本操作:
1.3 获取选中行,选中行的字段的值
1.4 添加列的两种情况是可以同时用的
二.List(列表)
1.创建一个类,用于作为list的项
3.将其封装到BindData方法体中设计网格
三.DataTable
1.增加列:先创建列对象,再添加数据
2.增加行(两种)
1.1构建DataGridView数据表:
创建列
1.直接通过修改控件DataGridView任务,来编辑列表;
(注意:在编辑列表的时候,不仅可以添加文本类,还可以添加其他列;特殊列是可以直接通过属性来显示表中显示的内容: 如 button: 通过 Text 设置默认文本且,userColumnTextForButton:True 才能将内容呈现;不过如果为false,表中呈现的数据就是绑定的数据)
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"});
注意:使用数据源绑定时,不会出现(先绑定 任务创建的列,再绑定代码写的),因为list和datatable 列名和值都是一一对应的;
推荐使用数据源绑定
//定义一个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;
}
}
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;
}
注:包含创建行列,数据添加(行列),数据删除。
//增加列头集合----关键字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=" ";
//第一种方法, 直接添加行
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();