Control Study -> 主表和子表数据同时在绑定控件显示

(一).显示效果图

(二)代码

1.前台界面代码:

> ``` @ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="数据绑定控件同时显示主表和子表数据.WebForm1"

1>  ```
2@ Import Namespace="System.Data" 

>

>

 1<html>   
 2&gt;  <head>   
 3&gt;  <title>WebForm1</title>   
 4&gt;  <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"/>   
 5&gt;  <meta content="C#" name="CODE_LANGUAGE"/>   
 6&gt;  <meta content="JavaScript" name="vs_defaultClientScript"/>   
 7&gt;  <meta content=" http://schemas.microsoft.com/intellisense/ie5 " name="vs_targetSchema"/>   
 8&gt;  </head>   
 9&gt;  <body ms_positioning="GridLayout">   
10&gt;  <form id="Form1" method="post" runat="server">   
11&gt;  <!-- 绑定主表数据 -->   
12&gt;  <asp:repeater id="myRepeater" runat="server">   
13&gt;  <headertemplate>   
14&gt;  <table bgcolor="lightblue" border="0">   
15&gt;  </table></headertemplate>   
16&gt;  <itemtemplate>   
17&gt;  <tr>   
18&gt;  <td style="background-color: lightgray">   
19&gt;  <b>   
20&gt;  ```
21# DataBinder.Eval(Container.DataItem,"TypeID") 

>  
> ```

DataBinder.Eval(Container.DataItem,"TypeName")

 1&gt;  </b>   
 2&gt;  <br/>   
 3&gt;  <!-- 绑定子表数据 -->   
 4&gt;  <asp:repeater datasource='```
 5# ((DataRowView)Container.DataItem)   
 6&amp;gt;  .Row.GetChildRows("TypeRelation") 
 7```' id="childRepeater" runat="server">   
 8&gt;  <itemtemplate>   
 9&gt;  <table bgcolor="#ffcc33" border="0">   
10&gt;  <tr>   
11&gt;  <td>   
12&gt;       
13&gt;  ```
14# DataBinder.Eval(Container.DataItem,"[\"TypeID\"]") 

>  
> ```

DataBinder.Eval(Container.DataItem, "["TypeDetail"]")

 1&gt;  <br/>   
 2&gt;  </td>   
 3&gt;  </tr>   
 4&gt;  </table>   
 5&gt;  </itemtemplate>   
 6&gt;  </asp:repeater>   
 7&gt;  </td>   
 8&gt;  </tr>   
 9&gt;  </itemtemplate>   
10&gt;  <footertemplate>   
11&gt;     
12&gt;  </footertemplate>   
13&gt;  </asp:repeater>
14&gt; 
15&gt; </form>   
16&gt;  </body>   
17&gt;  </html>

2. 后代代码

> using System;
> using System.Collections;
> using System.ComponentModel;
> using System.Data;
> using System.Drawing;
> using System.Web;
> using System.Web.SessionState;
> using System.Web.UI;
> using System.Web.UI.WebControls;
> using System.Web.UI.HtmlControls; > > namespace 数据绑定控件同时显示主表和子表数据
> {
> ///

1<summary>   
2&gt;  /// 数据绑定控件同时显示主表和子表数据   
3&gt;  /// </summary>

> public class WebForm1 : System.Web.UI.Page
> {
> protected System.Web.UI.WebControls.Repeater myRepeater;
> private void Page_Load(object sender, System.EventArgs e)
> {
> DataSet ds = new DataSet();
>
> //1.构造主表
> DataTable dtTypeParent=new DataTable();
> dtTypeParent.Columns.Add(new DataColumn("TypeID",typeof(int)));
> dtTypeParent.Columns.Add(new DataColumn("TypeName",typeof(string)));
> //给主表添加两条记录
> DataRow drParent1 = dtTypeParent.NewRow();
> drParent1["TypeID"] = 1;
> drParent1["TypeName"] = "水果";
> dtTypeParent.Rows.Add(drParent1);
> DataRow drParent2 = dtTypeParent.NewRow();
> drParent2["TypeID"] = 2;
> drParent2["TypeName"] = "玩具";
> dtTypeParent.Rows.Add(drParent2);
> dtTypeParent.TableName="TypeParent";
> dtTypeParent.PrimaryKey = new DataColumn[] {dtTypeParent.Columns["TypeID"]};
> ds.Tables.Add(dtTypeParent);
>
> //2.构造子表
> DataTable dtTypeChild=new DataTable();
> dtTypeChild.Columns.Add(new DataColumn("TypeID",typeof(int)));
> dtTypeChild.Columns.Add(new DataColumn("TypeDetail",typeof(string)));
> //给子表添加五条记录
> DataRow drChild1 = dtTypeChild.NewRow();
> drChild1["TypeID"] = 1;
> drChild1["TypeDetail"] = "苹果";
> dtTypeChild.Rows.Add(drChild1);
> DataRow drChild2 = dtTypeChild.NewRow();
> drChild2["TypeID"] = 1;
> drChild2["TypeDetail"] = "桔子";
> dtTypeChild.Rows.Add(drChild2);
> DataRow drChild3 = dtTypeChild.NewRow();
> drChild3["TypeID"] = 1;
> drChild3["TypeDetail"] = "香蕉";
> dtTypeChild.Rows.Add(drChild3);
> DataRow drChild4 = dtTypeChild.NewRow();
> drChild4["TypeID"] = 2;
> drChild4["TypeDetail"] = "机器人";
> dtTypeChild.Rows.Add(drChild4);
> DataRow drChild5 = dtTypeChild.NewRow();
> drChild5["TypeID"] = 2;
> drChild5["TypeDetail"] = "小汽车";
> dtTypeChild.Rows.Add(drChild5);
> dtTypeChild.TableName="TypeChild";
> ds.Tables.Add(dtTypeChild); > > ds.Relations.Add("TypeRelation",
> ds.Tables["TypeParent"].Columns["TypeID"],
> ds.Tables["TypeChild"].Columns["TypeID"]);
>
> myRepeater.DataSource = ds.Tables["TypeParent"];
> Page.DataBind();
> } > >
> #region Web 窗体设计器生成的代码
> override protected void OnInit(EventArgs e)
> {
> //
> // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
> //
> InitializeComponent();
> base.OnInit(e);
> }
>
> ///

1<summary>   
2&gt;  /// 设计器支持所需的方法 - 不要使用代码编辑器修改   
3&gt;  /// 此方法的内容。   
4&gt;  /// </summary>

> private void InitializeComponent()
> {
> this.Load += new System.EventHandler(this.Page_Load);
> }
> #endregion
> }
> }
>

(三).示例下载

http://www.cnblogs.com/Files/ChengKing/DataRalationDisplay.rar

Published At
Categories with Web编程
Tagged with
comments powered by Disqus