ADO.NET_第五篇_DataTable_07Relations

+++ 本例演示如何使用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()方法绑定到控件上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值