private void CreateRelation() {
    // Get the DataColumn objects from two DataTable objects in a DataSet.
    DataColumn parentCol;
    DataColumn childCol;
    // Code to get the DataSet not shown here.
    parentCol = DataSet1.Tables["Customers"].Columns["CustID"];
    childCol = DataSet1.Tables["Orders"].Columns["CustID"];
    // Create DataRelation.
    DataRelation relCustOrder;
    relCustOrder = new DataRelation("CustomersOrders", parentCol, childCol);
    // Add the relation to the DataSet.
    DataSet1

解决方案 »

  1.   


    怎么不可以建!同一个表,取两次,以不同的表名放到DATASET中就可以建成了,我现在问一问高手们有没有
    比这更好的方法?
      

  2.   

    没有试过,怪ing。
    你遇到什么情况啊 需要这么一个关系,说来听听。
      

  3.   

    可以做,不过有一个问题就是所有记录都必须有实际存在的父记录,简单说如果你最顶层的记录的parentid你该如何来设置,如果用parentid在表中找不到匹配记录就会报错,我做了一个简单的测试,你可以试一下:SqlConnection myConnection = new SqlConnection("连接字符串");
    DataSet myDataSet = new DataSet();
    SqlDataAdapter myDataAdapter = new SqlDataAdapter("select * from testRelation",myConnection);
    myDataAdapter.Fill(myDataSet);
    myDataSet.Relations.Add("myRelation",
    myDataSet.Tables[0].Columns["id"], 
    myDataSet.Tables[0].Columns["parentid"]);
    foreach(DataRow drParent in myDataSet.Tables[0].Rows)
    {
    Response.Write("<p>" + drParent["description"] + ":" );
    foreach(DataRow drChilden in drParent.GetChildRows("myRelation"))
    {
    Response.Write("<li>" + drChilden["description"]);
    }
    }
      

  4.   

    当然这样做是完全可以,不过我觉得在一张表里好像没有必要使用DataRelation吧,你通过DataTable.Select()就可以获取子记录集了吧.