DataSet 中的 Relations 建立关系后得不到数据。大虾帮忙
得到 dta 和 dtb 中满足条件 dta.id = dtb.id 得所有dta表的所有字段。
最后再帮定到DataGride中,现在是建立的关系,没有显示出数据。
//dta
// id name sex
// 1  张三 男
// 2  王二 男
// 3  麻子 男 //dtb
// id pat
// 2  b1
// 3  b2
//得到 条件满足:dta.id = dtb.id 下的所有dta表的纪录 //定义dta
DataTable dta = new DataTable();
dta.Columns.Add("id",System.Type.GetType("System.Int32"));
dta.Columns.Add("Name",System.Type.GetType("System.String"));
dta.Columns.Add("Sex",System.Type.GetType("System.String"));
dta.AcceptChanges();
DataRow dr = dta.NewRow();
dr["id"] = 1;
dr["Name"] = "张三";
dr["Sex"] = "男";
dta.Rows.Add(dr);
DataRow dr1 = dta.NewRow();
dr1["id"] = 2;
dr1["Name"] = "王二";
dr1["Sex"] = "男";
dta.Rows.Add(dr1);
DataRow dr2 = dta.NewRow();
dr2["id"] = 3;
dr2["Name"] = "麻子";
dr2["Sex"] = "男";
dta.Rows.Add(dr2); //定义dtb
DataTable dtb = new DataTable();
dtb.Columns.Add("id",System.Type.GetType("System.Int32"));
dtb.Columns.Add("pat",System.Type.GetType("System.String"));
dtb.AcceptChanges();
DataRow dr3 = dtb.NewRow();
dr3["id"] = 2;
dr3["pat"] = "b2";
dtb.Rows.Add(dr3);
DataRow dr4 = dtb.NewRow();
dr4["id"] = 3;
dr4["pat"] = "b3";
dtb.Rows.Add(dr4);
dtb.AcceptChanges(); DataSet ds = new DataSet();
ds.Tables.Add(dta);
ds.Tables.Add(dtb);
ds.Tables[0].TableName = "a";
ds.Tables[1].TableName = "b"; ds.Relations.Add("c",ds.Tables["a"].Columns["id"],ds.Tables["b"].Columns["id"]);
Datagrid3.DataSource = ds;
Datagrid3.DataBind();

解决方案 »

  1.   


    那你显示的什么  ?Relations 的用法 弄错了吧,是不是 需要 flush 一下,我还没哟用过 Relations ,都是通过数据库关联查询的。
      

  2.   

    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    if(!Page.IsPostBack)
    {
    ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter("SELECT CustomerID, CompanyName FROM Customers; SELECT OrderID, CustomerID, ShipAddress, ShipCity, ShipRegion, ShipRegion FROM Orders", "server=; uid=sa; pwd=; database=northwind");
    da.Fill(ds);
    ds.Tables[0].PrimaryKey = new DataColumn[1] {ds.Tables[0].Columns[0]};
    ds.Relations.Add("CustomerOrder", ds.Tables[0].Columns[0], ds.Tables[1].Columns[1]);
    Session["ds"] = ds;
    pageBind();
    }
    else
    {
    ds = (DataSet)Session["ds"];
    }
    }
    private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    DataTable dt = new DataTable();
    dt = ds.Tables[1].Clone();

    foreach(DataRow row in ds.Tables[0].Rows.Find(DropDownList1.SelectedItem.Value).GetChildRows("CustomerOrder"))
    {
    dt.ImportRow(row);
    }

    DataGrid1.DataSource = dt;
    DataGrid1.DataMember = dt.TableName;
    DataGrid1.DataBind();
    }
      

  3.   

    将Datagrid3.DataSource = ds;
    改成Datagrid3.DataSource = ds.Tables[0].DefaultView;试下