(一).显示效果图
(二)代码
1.前台界面代码:
> ``` @ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="数据绑定控件同时显示主表和子表数据.WebForm1"
1> ```
2@ Import Namespace="System.Data"
>
>
1<html>
2> <head>
3> <title>WebForm1</title>
4> <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR"/>
5> <meta content="C#" name="CODE_LANGUAGE"/>
6> <meta content="JavaScript" name="vs_defaultClientScript"/>
7> <meta content=" http://schemas.microsoft.com/intellisense/ie5 " name="vs_targetSchema"/>
8> </head>
9> <body ms_positioning="GridLayout">
10> <form id="Form1" method="post" runat="server">
11> <!-- 绑定主表数据 -->
12> <asp:repeater id="myRepeater" runat="server">
13> <headertemplate>
14> <table bgcolor="lightblue" border="0">
15> </table></headertemplate>
16> <itemtemplate>
17> <tr>
18> <td style="background-color: lightgray">
19> <b>
20> ```
21# DataBinder.Eval(Container.DataItem,"TypeID")
>
> ```
DataBinder.Eval(Container.DataItem,"TypeName")
1> </b>
2> <br/>
3> <!-- 绑定子表数据 -->
4> <asp:repeater datasource='```
5# ((DataRowView)Container.DataItem)
6&gt; .Row.GetChildRows("TypeRelation")
7```' id="childRepeater" runat="server">
8> <itemtemplate>
9> <table bgcolor="#ffcc33" border="0">
10> <tr>
11> <td>
12>
13> ```
14# DataBinder.Eval(Container.DataItem,"[\"TypeID\"]")
>
> ```
DataBinder.Eval(Container.DataItem, "["TypeDetail"]")
1> <br/>
2> </td>
3> </tr>
4> </table>
5> </itemtemplate>
6> </asp:repeater>
7> </td>
8> </tr>
9> </itemtemplate>
10> <footertemplate>
11>
12> </footertemplate>
13> </asp:repeater>
14>
15> </form>
16> </body>
17> </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> /// 数据绑定控件同时显示主表和子表数据
3> /// </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> /// 设计器支持所需的方法 - 不要使用代码编辑器修改
3> /// 此方法的内容。
4> /// </summary>
> private void InitializeComponent()
> {
> this.Load += new System.EventHandler(this.Page_Load);
> }
> #endregion
> }
> }
>
(三).示例下载
http://www.cnblogs.com/Files/ChengKing/DataRalationDisplay.rar