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();
得到 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();
那你显示的什么 ?Relations 的用法 弄错了吧,是不是 需要 flush 一下,我还没哟用过 Relations ,都是通过数据库关联查询的。
{
// 在此处放置用户代码以初始化页面
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();
}
改成Datagrid3.DataSource = ds.Tables[0].DefaultView;试下