主表和子表数据同时在绑定控件显示

控件|数据|显示

(一).显示效果图

(二)代码

   1.前台界面代码:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="数据绑定控件同时显示主表和子表数据.WebForm1" %>
<%@ Import Namespace="System.Data" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>WebForm1</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
   <!-- 绑定主表数据 -->
   <asp:repeater id="myRepeater" runat="server">
    <HeaderTemplate>
     <table border="0" bgcolor="lightblue">
    </HeaderTemplate>
    <ItemTemplate>
     <tr>
      <td style="background-color: lightgray">
       <b>
        <%# DataBinder.Eval(Container.DataItem,"TypeID") %>
         
        <%# DataBinder.Eval(Container.DataItem,"TypeName") %>
       </b>
       <br>
       <!-- 绑定子表数据 -->
       <asp:repeater id="childRepeater" datasource='<%# ((DataRowView)Container.DataItem)
   .Row.GetChildRows("TypeRelation") %>' runat="server">
        <itemtemplate>
         <table border="0" bgcolor="#ffcc33">
          <tr>
           <td>
              
            <%# DataBinder.Eval(Container.DataItem,"[\"TypeID\"]") %>
             
            <%# DataBinder.Eval(Container.DataItem, "[\"TypeDetail\"]")%>
            <br>
           </td>
          </tr>
         </table>
        </itemtemplate>
       </asp:repeater>
      </td>
     </tr>
    </ItemTemplate>
    <FooterTemplate>
     </table>
    </FooterTemplate>
   </asp:repeater>
  </form>
 </body>
</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 数据绑定控件同时显示主表和子表数据
{
 /// <summary>
 /// 数据绑定控件同时显示主表和子表数据
 /// </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);
  }
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  /// 此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {   
   this.Load += new System.EventHandler(this.Page_Load);
  }
  #endregion
 }
}

时间: 2024-08-29 11:24:56

主表和子表数据同时在绑定控件显示的相关文章

关于c#中两个DataGrid绑定到主表和子表的数据同步问题

datagrid|数据|数据同步|问题 在数据库编程中,我们常常要将主表和子表分别绑定到两个DataGrid,同时还有一些TextBox之类的控件要显示相应DataGrid中的数据,这时候数据的同步就成了一个问题.这个问题的解决方法就是使用BindingManagerBase来管理数据了.在DataSet中的两个表之间添加关系 private void CreateRelation(Dataset ds,string relationname,string MasterTableName,str

PostgreSQL Analyze分区表:主表与子表的统计信息问题

  最近在PostgreSQL的Mail List中参与讨论了一个问题: ANALYZE'ing table hierarchies.   网友认为在Analyze分区表的时候,只能看到主表的analyze日期更新到最新,但是子表的日期没有变化,他认为analyze应该是在分析主表的时候会将与之相关的子表一起更新.     为此测试了一下,发现无论主表还是子表,需要单独的对其进行analyze才可以更新其最新的统计信息.   以下是实验部分:    music=> create table mu

关于ASP页面通过绑定的数据进行判断隐藏控件的问题

问题描述 关于ASP页面通过绑定的数据进行判断隐藏控件的问题 后台传递过来给予绑定的数据, <asp:TemplateField HeaderText="是否发货"> <HeaderStyle HorizontalAlign="Center" Width="6%" /> <ItemTemplate > <%#Check(Eval("IsSendGoods"))%> </It

利用Repeater控件显示主-从关系数据表

NestedRepeater.aspx NestedRepeater.aspx.csusing System;using System.Data;using System.Data.SqlClient;using System.Web;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;namespace eMeng{/// /// NestedRepeater 的摘要说明./// 本

使用嵌套的Repeater控件显示分级数据

控件|数据|显示     简介       本文描述如何使用嵌套的Repeater 控件来显示分级数据 .当然了,你也可以将这一技术应用到其他的列表绑定控件上去,比如DataGrid包含DataGrid,DataList包含DataList等等的组合.       绑定到父表       1.添加一个新的Web Form 到应用程序项目中,名称为Nestedrepeater.ASPx.    2.从工具箱托动一个Repeater 控件到这个页面上, 设定其ID 属性为 parent .    3

使用 ASP+ 列表绑定控件 (转自ms 二)

asp+|控件 DataGrid 控件DataGrid 控件使您可以生成数据源格式丰富的列表表示.此外,它还支持随其它操作选择项目. 本节的四个示例使用包含有关书名信息(标题.标题 ID.作者.价格和出版日期)的表.全部数据都用 TitlesDB.xml 中的 XML 予以维持.在建立页面来表示此表的内容并选择书籍时,这些示例遵循增量方法.代码列表包含黑体文本,以表明一个示例构建于以前示例时所作的更改. 截自 TitlesDB.xml: <root><schema id="Do

使用 ASP+ 列表绑定控件(上)

asp+|控件 简介       Repeater.DataList和DataGrid控件构成ASP+页面框架中System.Web.   UI.WebControls名称空间内的相关Web控件集.这些控件使HTML显示所绑   定列表或数据源的内容.因此,将它们统称为"列表绑定控件".      与框架中的其它 Web       控件类似,这些控件提供一致的编程模型并封装一个独立于浏览器的   表示逻辑.这些特性使开发人员能够针对对象模型编程而不用必须掌握与   HTML 相关的那

使用 ASP+ 列表绑定控件 (转自ms 一)

asp+|控件 使用 ASP+ 列表绑定控件Nikhil KothariMicrosoft Corporation 2000年7月 摘要: 说明 ASP+ Repeater.DataList 和 DataGrid 服务器控件.这些控件能够实现一个根植于数据源的,基于 HTML 的应用程序用户界面.讨论与这些控件有关的概念并概要介绍使用这些控件的基本示例. 目录简介 列表绑定控件是如何工作的? Repeater 控件 DataList 控件 DataGrid 控件 Repeater.DataLis

asp.net学习之 数据绑定控件--表格绑定控件

原文:asp.net学习之 数据绑定控件--表格绑定控件     数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件是将其他 ASP.NET Web 控件(例如 Label 和 TextBox 控件)组合到单个布局中的复合控件.     例如,诸如 DetailsView 控件等数据绑定控件可绑定到一个结果集,例如,包含每个雇员的姓名.地址.职务等信息的雇员表.在 DetailsView 控件中,可以将 Labe