如何显示主细表,使用GridView DataGrid和 DataList
一般的数据绑定就不多说了,但如果要显示主细表时就需要我们运用一些技巧。其中的关键是,如何动态制定细表的DataSource。我现在知道有2种方法,和大家交流一下,一种是用
DataSource='<%# ((System.Data.DataRowView)Container.DataItem).CreateChildView("tableRelation")
一种是用 Session 控制。说到这里高手都知道怎么会事,我还是为和我一样的菜鸟多说两句。
先说一下GirdView和DataGrid,GridView好像是ASP.net 2.0里面的新东西,可以看作是以前DataGrid的增强版,编辑起来更加方便。它们都可以嵌套在自身的模版或DataList的模版中,我就使用嵌套来显示细表。
下面说第一种 DataSource='<%# ((System.Data.DataRowView)Container.DataItem).CreateChildView("tableRelation")
第一种要求我们在数据源中创建出主细表的约束关系("tableRelation"),然后用上式指定细表的DataSource。
废话不说,看例子:
protected void Page_Load(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|/MyDemo.mdb");
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM 表1", conn);
DataSet ds = new DataSet();
da.Fill(ds, "t1");
da.SelectCommand.CommandText = "SELECT * FROM 表2";
da.Fill(ds, "t2");
DataColumn Parent = ds.Tables["t1"].Columns["凭单号"]; //外键
DataColumn Child = ds.Tables["t2"].Columns["凭单号"];
DataRelation tableRelation = new DataRelation("tableRelation", Parent, Child, false);
ds.Relations.Add(tableRelation);
this.dgMaster.DataSource = ds.Tables["t1"].DefaultView; //dgMaster 是GridView
this.dgMaster.DataBind();
}
指定DataSource:
<asp:GridView ]) + 1;
}
比较而言,第一种更严谨直接,第2种也是一种解决思路。其实在DataBound事件中我们还可以做很多事情。希望能给大家一些启发。就说到这里吧。