经常需要在内存中管理一些关联的数据。如果仅仅用变量来表示,感觉松散了一些;如果用数据库表示,又有些过分铺张。这个时候用DataTable就显得非常合适了。
1、建立DataTable
myTable = new DataTable();
//增加三个字段
myTable.Columns.Add("FirstName", typeof(string));
myTable.Columns.Add("LastName", typeof(string));
myTable.Columns.Add("Age", typeof(int));
//增加三条记录
myTable.Rows.Add("aaaa", "bbbb", 11);
myTable.Rows.Add("cccc", "dddd", 22);
myTable.Rows.Add("eeee", "ffff", 33);
//绑定到GridView
this.dataGridView1.DataSource = myTable; //.DefaultView;
//还有一种比较繁琐的定义字段方法
//DataColumn myColumn;
//myColumn = new DataColumn();
//myColumn.DataType = Type.GetType("System.String");
//myColumn.ColumnName = "FirstName";
//myTable.Columns.Add(myColumn);
2、Looping through Datatable(遍历)
if (myTable == null)
{
this.label1.Text = "no data in the table.";
return;
}
this.label1.Text = "";
this.label2.Text = "";
this.label3.Text = "";
foreach (DataRow rw in myTable.Rows)
{
this.label1.Text += " "+rw["FirstName"];
this.label2.Text += " "+rw["LastName"];
this.label3.Text += " "+rw["Age"];
}
//也可以用双重循环遍历
foreach (DataRow rw in myTable.Rows)
{
foreach (DataColumn col in myTable.Columns)
{
this.label1.Text += " " + rw[col];
}
}
3、编辑DataTable的内容
this.label4.Text = myTable.Rows[1].ItemArray[0].ToString();
this.label4.Text = myTable.Rows[1]["FirstName"].ToString();
this.label4.Text = myTable.Rows.Count.ToString();
//这样不行:
//this.label4.Text = myTable.Rows[1].FirstName;
4、传递DataTable
private void button3_Click(object sender, EventArgs e)
{
DataTable yourTable;
yourTable = getTable();
this.dataGridView2.DataSource = yourTable;
}
private DataTable getTable()
{
return myTable;
}
挺简单的,是不是?