广

ASP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-05-04 21:21:22 次阅读 稿源:互联网
    零七广告

      简介

      本文描述如何使用嵌套的Repeater 控件来显示分级数据 。当然了,你也可以将这一技术应用到其他的列表绑定控件上去,比如DataGrid包含DataGrid,DataList包含DataList等等的组合。

      绑定到父表

      1.添加一个新的Web Form 到应用程序项目中,名称为Nestedrepeater.aspx.

      2.从工具箱托动一个Repeater 控件到这个页面上, 设定其ID 属性为 parent .

      3.切换到HTML 视图.

      4.选中下列<itemtemplate> 代码,复制到Repeater 控件对应的位置。注意,粘贴的时候请使用“粘贴为html”功能。这些语句包含了数据绑定语法,很简单。

      

    <itemtemplate><b><%# DataBinder.Eval(Container.DataItem, "au_id") %></b><br></itemtemplate>

      5.打开Nestedrepeater.aspx.cs 这个代码分离文件。降下列代码添加到Page_Load 事件中,其作用是建立一个到 Pubs (这个数据库是sql server的演示数据库。另外在安装.net framework sdk的时候也会安装这个数据库)数据库的连接,并绑定Authors 表到Repeater 控件

    public void Page_Load(){ SqlConnection cnn = new SqlConnection("server=(local);database=pubs;uid=sa;pwd=;"); SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn);  DataSet ds = new DataSet();  cmd1.Fill(ds,"authors");//这里将要插入子表的数据绑定parent.DataSource = ds.Tables["authors"];  Page.DataBind(); cnn.Close();}

      6.在文件的头部添加下面的名称空间

      using System.Data.SqlClient;

      7.根据你自己的情况修改一下连接字符串

      8.保存并编译应用程序

      9.在浏览器中打开这个页面,输出结果类似于下面的格式

      

    172-32-1176213-46-8915238-95-7766267-41-2394... 

      绑定到子表

      1.在页面的HTML视图中,添加下列代码。其目的是增加子Repeater 控件到父Repeater的项目模板中,形成嵌套。

    <asp:repeater id="child" runat="server"><itemtemplate><%# DataBinder.Eval(Container.DataItem, "["title_id"]") %><br></itemtemplate></asp:repeater>

      2.设置子Repeater 控件的DataSource 属性:

    <asp:repeater ... datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>'>

      3.在页面顶部添加下列指睿ㄇ胱⒁猓是?aspx文件中):

      <%@ Import Namespace="System.Data" %>

      在.cs文件中,将Page_Load中的注释部分(//这里将要插入子表的数据绑定)替换成下列代码:

    SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor",cnn);cmd2.Fill(ds,"titles");ds.Relations.Add("myrelation",ds.Tables["authors"].Columns["au_id"],ds.Tables["titles"].Columns["au_id"]);

      4.保存并编译应用程序。

      .在浏览器中察看修改后的页面。显示格式类似于下面的格式:

    172-32-1176PS3333213-46-8915BU1032BU2075238-95-7766PC1035267-41-2394BU1111TC7777... 

      完整的代码

    Nestedrepeater.aspx<%@ Page Language=C# Inherits="yourprojectname.nestedrepeater" %><%@ Import Namespace="System.Data" %><html><body><form runat=server><!-- start parent repeater --><asp:repeater id="parent" runat="server">  <itemtemplate>   <b><%# DataBinder.Eval(Container.DataItem,"au_id") %></b><br><!-- start child repeater -->   <asp:repeater id="child" datasource='<%# ((DataRowView)Container.DataItem).Row.GetChildRows("myrelation") %>' runat="server">    <itemtemplate>      <%# DataBinder.Eval(Container.DataItem, "["title_id"]")%><br>     </itemtemplate>   </asp:repeater>   <!-- end child repeater --></itemtemplate></asp:repeater><!-- end parent repeater --></form></body></html>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 yourprojectname{ public class nestedrepeater : System.Web.UI.Page  {   protected System.Web.UI.WebControls.Repeater parent;   public nestedrepeater()   {     Page.Init += new System.EventHandler(Page_Init);   }   public void Page_Load(object sender, EventArgs e)   {     //Create the connection and DataAdapter for the Authors table.     SqlConnection cnn = new SqlConnection("server=(local);database=pubs;uid=sa;pwd=;");     SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors",cnn);//Create and fill the DataSet.     DataSet ds = new DataSet();     cmd1.Fill(ds,"authors");//Create a second DataAdapter for the Titles table.     SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor",cnn);     cmd2.Fill(ds,"titles");//Create the relation bewtween the Authors and Titles tables.     ds.Relations.Add("myrelation",     ds.Tables["authors"].Columns["au_id"],     ds.Tables["titles"].Columns["au_id"]);//Bind the Authors table to the parent Repeater control, and call DataBind.     parent.DataSource = ds.Tables["authors"];     Page.DataBind();//Close the connection.     cnn.Close();   }   private void Page_Init(object sender, EventArgs e)   {     InitializeComponent();   }   private void InitializeComponent()   {    this.Load += new System.EventHandler(this.Page_Load);   }  }}

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告