本次只讨论控件的数据绑定
第一种用法:dataGridView1.DataSource = new BindingList<dg>(ds);
其中dg是一个类名,ds是该类的一个集合,例如:
public class dg
{
public string id { get; set; }
public string name { get; set; }
public string age { get; set; }
}
List<dg> ds = new List<dg>();
窗体上控件手动添加列名,如下图
在编辑列菜单中,有三个参数Name、DataPropertyName、HeaderText,其中将DataPropertyName的值设为与之前定义的类的参数一致,很多人在网上问为何自己手动加的列,等数据填充后数据不在该列下显示而是自动添加列显示的,这就是原因。
小结:该方式与程序联系紧密,数据绑定简单,但是我在使用的时候发现控件自带的点击列名排序的功能没有了,不知道是不是我的设置问题,望高人指教。
第二种用法:直接代码写入数据
string[] row = { “1”, “18”, “Tom”};
dataGridView1.ColumnCount = 3;
dataGridView1.Columns[0].HeaderText = "id";
dataGridView1.Columns[1].HeaderText = "age";
dataGridView1.Columns[2].HeaderText = "name";
dataGridView1.Rows.Add(row);
小结:该方式简单粗暴,手动添加列和代码添加都可以,关键是支持点击列名称自带切换排序
第三种用法:绑定数据表
using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ToString()))
{
SqlDataAdapter sda = new SqlDataAdapter("Select * From T_Class Where F_Type='Product' order by F_RootID,F_Orders", conn);
DataSet Ds = new DataSet();
sda.Fill(Ds, "T_Class");
//使用DataSet绑定时,必须同时指明DateMember
//this.dataGridView1.DataSource = Ds;
//this.dataGridView1.DataMember = "T_Class";
//也可以直接用DataTable来绑定
this.dataGridView1.DataSource = Ds.Tables["T_Class"];
}
第四种:
int iRow = dv.Rows.Add();
dv.Rows[iRow].Cells[0].Value = s.output[i].id.ToString();
dv.Rows[iRow].Cells[1].Value = "-";
dv.Rows[iRow].Cells[2].Value = s.output[i].brand;
dv.Rows[iRow].Cells[3].Value = s.output[i].name;