+++ 本例演示如何使用DataTable的DataRelation
private System.Data.DataSet dataSet=new DataSet();
private void MakeDataTables()
{
MakeParentTable();
MakeChildTable();
MakeDataRelation();
BindToDataGrid();
}
#region 创建父表
private void MakeParentTable()
{
System.Data.DataTable table = new DataTable("ParentTable");
DataColumn column;
DataRow row;
// 创建两个列,并添加到表
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "id";
column.ReadOnly = true;
column.Unique = true;
table.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "ParentItem";
column.AutoIncrement = false;
column.Caption = "ParentItem";
column.ReadOnly = false;
column.Unique = false;
table.Columns.Add(column);
// 设置主键
DataColumn[] PrimaryKeyColumns = new DataColumn[1];
PrimaryKeyColumns[0] = table.Columns["id"];
table.PrimaryKey = PrimaryKeyColumns;
dataSet.Tables.Add(table);
for (int i = 0; i <= 2; i++)
{
row = table.NewRow();
row["id"] = i;
row["ParentItem"] = "ParentItem_" + i;
table.Rows.Add(row);
}
Response.Write("ID 父项");
foreach (DataRow dr in table.Rows)
{
Response.Write(dr["id"].ToString() + " " + dr["ParentItem"].ToString() + "</br>");
}
}
#endregion
#region 创建子表
private void MakeChildTable()
{
DataTable table = new DataTable("childTable");
DataColumn column;
DataRow row;
// 创建列并添加到表
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "ChildID";
column.AutoIncrement = true;
column.Caption = "ID";
column.ReadOnly = true;
column.Unique = true;
table.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.String");
column.ColumnName = "ChildItem";
column.AutoIncrement = false;
column.Caption = "ChildItem";
column.ReadOnly = false;
column.Unique = false;
table.Columns.Add(column);
column = new DataColumn();
column.DataType = System.Type.GetType("System.Int32");
column.ColumnName = "ParentID";
column.AutoIncrement = false;
column.Caption = "ParentID";
column.ReadOnly = false;
column.Unique = false;
table.Columns.Add(column);
dataSet.Tables.Add(table);
// Create three sets of DataRow objects,
// five rows each, and add to DataTable.
for (int i = 0; i <= 4; i++)
{
row = table.NewRow();
row["childID"] = i;
row["ChildItem"] = "Item " + i;
row["ParentID"] = 0;
table.Rows.Add(row);
}
for (int i = 0; i <= 4; i++)
{
row = table.NewRow();
row["childID"] = i + 5;
row["ChildItem"] = "Item " + i;
row["ParentID"] = 1;
table.Rows.Add(row);
}
for (int i = 0; i <= 4; i++)
{
row = table.NewRow();
row["childID"] = i + 10;
row["ChildItem"] = "Item " + i;
row["ParentID"] = 2;
table.Rows.Add(row);
}
Response.Write("子ID 子项 父项");
foreach (DataRow dr in table.Rows)
{
Response.Write(dr["childID"].ToString() + " " + dr["ChildItem"].ToString() + " " + dr["ParentID"].ToString() + "</br>");
}
}
#endregion
#region 创建关系
private void MakeDataRelation()
{
// DataRelation方法要求父表和子表的DataColumn和一个名字
DataColumn parentColumn = dataSet.Tables["ParentTable"].Columns["id"];
DataColumn childColumn = dataSet.Tables["ChildTable"].Columns["ParentID"];
DataRelation relation = new DataRelation("parent2Child", parentColumn, childColumn);
dataSet.Tables["ChildTable"].ParentRelations.Add(relation);
}
#endregion
private void BindToDataGrid()
{
GridView1.DataSource = dataSet;
GridView1.DataBind();
//dataGrid1.SetDataBinding(dataSet, "ParentTable");
}
protected void Page_Load(object sender, EventArgs e)
{
MakeDataTables();
}
+++ 说明
1) 首先创建一个全局的DataSet变量,MakeParentTable()方法创建父表,MakeChildTable()方法创建子表,MakeDataRelation()方法创建父子表之间的关系(主外键关系),将父子表和关系都放到DataSet中,最后用BindToDataGrid()方法绑定到控件上。
ADO.NET_第五篇_DataTable_07Relations
最新推荐文章于 2019-11-05 13:03:27 发布