ASP.NET 绑定DataSet中的多个表

    技术2022-05-12  11

    今天在论坛遇到有人问如何在ASP.NET的数据控件中如何一次绑定多个表?这个问题,平时很少看到,一般在数据绑定之前,数据都是放在一个表中的,实际上,如果表之间存在关系,绑定多个表也是可以的。下面就是 DataSet中两个表进行绑定的例子。

    查看例子

    <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">   protected void Page_Load(object sender, EventArgs e)   {     System.Data.DataSet ds = new System.Data.DataSet();     System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");     System.Data.DataRow dr;     dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));     dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));     dataTable1.PrimaryKey = new System.Data.DataColumn[] { dataTable1.Columns["UserId"] };     for (int i = 0; i < 8; i++)     {       dr = dataTable1.NewRow();       dr[0] = i;       dr[1] = "【孟子E章】" + i.ToString();       dataTable1.Rows.Add(dr);     }     System.Data.DataTable dataTable2 = new System.Data.DataTable("BlogArticle");     dataTable2.Columns.Add(new System.Data.DataColumn("ArticleId", typeof(System.Int32)));     dataTable2.Columns.Add(new System.Data.DataColumn("Title", typeof(System.String)));     dataTable2.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));     dataTable2.PrimaryKey = new System.Data.DataColumn[] { dataTable1.Columns["ArticleId"] };     Random rd = new Random();     for (int i = 0; i < 20; i++)     {       dr = dataTable2.NewRow();       dr[0] = i;       dr[1] = "文章标题" + i.ToString();       dr[2] = rd.Next(0, 7);       dataTable2.Rows.Add(dr);     }     ds.Tables.Add(dataTable1);     ds.Tables.Add(dataTable2);     System.Data.DataColumn parentColumn = ds.Tables["BlogUser"].Columns["UserId"];     System.Data.DataColumn childColumn = ds.Tables["BlogArticle"].Columns["UserId"];     System.Data.DataRelation user_article = new System.Data.DataRelation("UserId", parentColumn, childColumn);     ds.Relations.Add(user_article);     this.Repeater1.DataSource = ds.Tables["BlogArticle"].DefaultView;     this.Repeater1.DataBind();   } </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server">   <title>【孟宪会之精彩世界】- ASP.NET 绑定DataSet中的多个表 作者:孟子E章</title> </head> <body>   <form id="form1" runat="server">   <asp:Repeater ID="Repeater1" runat="server">     <HeaderTemplate>       <table border="1">         <tr style="background:orange">           <th>文章标题</th>           <th>用户ID</th>           <th>用户名</th>         </tr>     </HeaderTemplate>     <FooterTemplate>       </table></FooterTemplate>     <ItemTemplate>       <tr>         <td><%#Eval("Title")%></td><td><%#Eval("UserId") %></td>         <td><%#(Container.DataItem as System.Data.DataRowView).Row.GetParentRow("UserId")["UserName"]%>         </td>       </tr>     </ItemTemplate>   </asp:Repeater>   </form> </body> </html>

    最新回复(0)