目录
一、概述
DataGridView 控件提供用于显示数据的可自定义表。 类 DataGridView 允许通过使用属性(如 DefaultCellStyle、 ColumnHeadersDefaultCellStyle、 CellBorderStyle和)自定义单元格、行、列和 GridColor边框。 有关详细信息,请参阅微软 DataGridView 控件中的基本格式设置和样式设置。
可以使用 DataGridView 控件在基础数据源中或不使用基础数据源显示数据。 如果不指定数据源,可以创建包含数据的列和行,并将其直接添加到 DataGridView using Rows and Columns properties。 还可以使用 Rows 集合访问 DataGridViewRow 对象和 DataGridViewRow.Cells 属性来直接读取或写入单元格值。 索引 Item[] 器还提供对单元格的直接访问。
作为手动填充控件的替代方法,可以设置 DataSource 属性 DataMember 以绑定到 DataGridView 数据源并自动填充数据。 有关详细信息,请参阅微软 DataGridView 控件中显示数据。
处理大量数据时,可以将属性设置为 VirtualModetrue 显示可用数据的子集。 虚拟模式需要实现在其中填充控件的数据缓存 DataGridView 。
二、DataTable 的用法
1.创建表和列
使用 new DataTable() 来创建一个 DataTable 表,创建表可以加上表名,也可以不加
DataTable dt = new DataTable();
DataTable dt1 = new DataTable("Datas");
DataTable 表 和我们常用的 Excel 是一样的,如下图,列就是 A,B,C,D… 行就是 1,2,3,4…
只是 DataTable 在创建后,是空的,既没有自动创建的列,也没有自动创建的行,这些都是要我们通过代码来实现的。
创建列通过 实例化 DataColumn 类,并 DataColumn 类 添加到 DataTable.Columns 中来实现添加一列。
DataTable dt = new DataTable("Datas");
DataColumn dc1 = new DataColumn("商品编号");
DataColumn dc2 = new DataColumn("商品名称");
DataColumn dc3 = new DataColumn("商品重量");
DataColumn dc4 = new DataColumn("商品价格");
DataColumn dc5 = new DataColumn("购买数量");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);
在添加列的同时,可以给列添加一些设置
DataTable dt = new DataTable("Datas");
DataColumn dc1 = new DataColumn("商品编号");
DataColumn dc2 = new DataColumn("商品名称");
DataColumn dc3 = new DataColumn("商品重量");
DataColumn dc4 = new DataColumn("商品价格");
DataColumn dc5 = new DataColumn("购买数量");
dc1.AutoIncrement = true;//自动增加
dc1.AutoIncrementSeed = 1;//起始为1
dc1.AutoIncrementStep = 1;//步长为1
dc1.AllowDBNull = false;//是否允许空值
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
dt.Columns.Add(dc4);
dt.Columns.Add(dc5);
只是这么做比较繁琐,因此不推荐。
推荐用下面方式去添加列
DataTable dt = new DataTable("Datas");
DataColumn dc = new DataColumn();
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//是否允许空值
//添加列
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("年龄", typeof(int));
dt.Columns.Add("身高", typeof(float));
dt.Columns.Add("体重", typeof(float));
dataGridView1.DataSource = dt;
效果:
可以看到,DataGridView 在绑定 DataTable 后会默认出现一个空白的行,你可能会有疑问,是不是这句代码导致的,如下:
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//是否允许空值
开始测试:
private void Form1_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable("Datas");
//添加列
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("年龄", typeof(int));
dt.Columns.Add("身高", typeof(float));
dt.Columns.Add("体重", typeof(float));
dt.Rows.Add("2号", 12, 220, 300);
dataGridView1.DataSource = dt;
}
效果:
所以实验证明,用 DataTable 绑定数据,是会默认添加一个空白行的,如果不想表格中有空白行,可以使用 List<类> 这种方式去绑定,参考下面代码:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace DateTable的使用
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
List<dog> doglist = new List<dog>();
private void Form1_Load(object sender, EventArgs e)
{
doglist.Add(new dog() {
name = "dog1", age = 1, color = "bule", gender = 1 });
doglist.Add(new dog() {
name = "dog2", age = 2, color = "green", gender = 0 });
doglist.Add(new dog() {
name = "dog3", age = 3, color = "red", gender = 1 });
dataGridView1.DataSource = doglist;
}
}
}
public class dog
{
public string name {
get; set; }
public int age {
get; set; }
public string color {
get; set; }
public int gender {
get; set; }
}
效果:
2.添加行
通过添加 DataRow 类来添加行,如下:
DataTable dt = new DataTable("Datas");
DataColumn dc = new DataColumn();
dc.AutoIncrement = true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//是否允许空值
//添加列
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("年龄", typeof(int));
dt.Columns.Add("身高", typeof(float