当前位置: 首页 > 编程日记 > 正文

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

作者:wincheer  来自:Asp.Net中文专业网

简介

  本文描述如何使用嵌套的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-1176 
213-46-8915
238-95-7766
267-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-1176 
PS3333
213-46-8915
BU1032
BU2075
238-95-7766
PC1035
267-41-2394
BU1111
TC7777
...

完整的代码

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.cs
using 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);
   }
  }
}

相关文章:

我还没考试,算法就说我的物理一定挂科

来源 | HyperAI超神经责编 | Carol封图 | CSDN 下载自视觉中国大学物理是理工科学生的基础必修课程,但也因为有一定的难度,令很多学生望而生畏。研究人员提出了用 AI 算法预测,哪些学生物理课有挂科风险,好让老师更好地进行教学指…

Dorado7功能及技术特点

简介 Dorado PresentationMiddleware(即Dorado展现中间件,以下简称Dorado)致力于辅助Web应用中表现层的开发过程。Dorado主要可以为您带来如下两方面的使用价值: 更加美观、更加人性化的Web操作界面。更加高效的表现层开发…

ELK日志分析平台搭建全过程

一、使用背景 当生产环境有很多服务器、很多业务模块的日志需要每时每刻查看时 二、环境 系统:centos 6.5 JDK:1.8 Elasticsearch-5.0.0 Logstash-5.0.0 kibana-5.0.0 三、安装 1、安装JDK 下载JDK:http://www.oracle.com/technetwork/java/j…

Android中Handler

本文通过例子来验证和说明使用Handler对象开启的线程是否和主线程为在同一线程中。 程序结构图如下: [1] HandlerActivity.java中的源码如下: [html] view plaincopyprint?package com.andyidea.handlerdemo2; import android.app.Activity; import…

刚出炉!程序员人才补贴:单项目最高补贴1000万元

最近,程序员届有一个重大好消息,可能很多人还不知道,那就是:国内某些城市已经开始程序员人才补贴了!对于人工智能公司的项目开发、人才引进、科技研发,最高按照国拨经费的30%给予配套支持,单个项…

ASP.NET中在线用户统计

天极论坛 统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率。现在,我们就介绍一个简单明了的方法来统计…

数(Number)

--读《自然数原本:数数论》(薛海明,山西科学技术出版社)和《数论概论》([美]Joseph H.Silverman,机械工业出版社)笔记 人们对于数的认识从数数(counting)开始&#xff0c…

linux 中root用户与普通用户的切换

su是在用户间切换,可以是从普通用户切换到root用户,也可以是从root用户切换到普通用户。 如果当前是root用户,那么切换成普通用户test用以下命令:su test或su - test 如果要切换回root用户或普通用户切换至root用户,用…

2个月做出一款AI项目?这些学生在DeeCamp上决出两个总冠军

出品 | AI科技大本营(ID:rgznai100)2个月,一群来自世界各地高校的学生做出了技术与商业化兼具的AI落地项目。8月5日,DeeCamp 2020人工智能训练营迎来总冠军答辩暨结营典礼。最终,自动驾驶赛道和创新赛道的两支团队夺得…

C语言宏定义技巧

C语言宏定义技巧(常用宏定义) 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义。 1、防止一个头文件被重复包含 …

了解C++默默编写并调用哪些函数

在C中,如果你写下 1 classEmpty{…}; 就相当于写下1 classEmpty{ 2 public: 3 Empty();//default构造函数 4 Empty(constEmpty& rhs){……};//copy构造函数 5 ~Empty(){…}//析构函数 6 Empty&operator(constEmpty& rhs){…};//copy赋值运算符 7 }; 惟有…

仅50张图片训练数据的AI分类技术PK​,阿里拿下ECCV 2020竞赛冠军

出品 | AI科技大本营(ID:rgznai100)近日,两年一度的世界计算机视觉领域顶会ECCV 2020的各项挑战赛结果出炉,在图像分类赛中,阿里安全的高效AI分类技术超越三星、深兰科技、同济大学等国内外多支队伍的同类技术获得冠军…

Eclipse生成jar文件

2019独角兽企业重金招聘Python工程师标准>>> 具体做法如下: 方法一:(工程没有引用外部jar包时,直接导出) 选中工程---->右键,Export...--->Java--->JAR file--->next-->选择jar file的路径及名称-->…

动态的管理ASP.NET DataGrid数据列

动网先锋 在ASP.NET的DataGrid数据显示控件编程中,我们有几种方式可以增加DataGrid columns。其中最常见的方法是在web forms设计器中增加,通过在控件工具箱中拖访DataGrid控件到web设计页面,然后在属性生成器中增加Columns列;还有一种方式就…

Django模型层Meta内部类详解

Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性。以下对此作一总结: abstract这个属性是定义当前的模型类是不是一个抽象类。所谓抽象类是不会对应数据库表的。一般我们用它来归纳一些公共属性字段,然后继承它的子类…

ASP.NET虚拟主机的重大安全隐患

作者:秦海鹏 来自: yesky 说明:本文中所有程序均在Windows 2000 Server中文版 SP2上编译运行无误开发环境:.Net 框架1.0 Version 1.0.3705 一、ASP.NET虚拟主机存在的重大隐患 我曾经在WWW.BRINKSTER.COM申请了一个免费的…

给力!一行代码躺赚普通程序员10年薪资!

笔者这两天闲逛知乎,看到了这个帖子:匿名答题,发表于2014年,此外没有留下任何多余信息。2年躺赚200万,相当于普通程序员10年的工资。没想到Pyhon这么强大,怪不得有人说“除了不会生孩子,Python什…

Hello world!

2019独角兽企业重金招聘Python工程师标准>>> 向世界打招呼,大家好,这是我的第一篇文章,我准备在这里开博! 转载于:https://my.oschina.net/chinesedragon/blog/57259

在VMware Workstation上安装Ubuntu 16.04 Server操作系统

Ubuntu 16.04 Server的下载 http://www.ubuntu.org.cn/download/server 按空格键(Space)选中第一个ssh服务 成功!

ASP.NET中WebForm组件CheckBoxList编程

作者:马金虎 来自:yesky CheckBox选择组件是一个程序中都经常的组件。在程序设计中使用到该组件,一般都不会只使用到一个,往往是以多个此类组件的形式出现的。在ASP.NET页面中如果要使用到多个CheckBox组件,除了添加…

今晚 8 点直播 | OpenCV 20 年,首款开源软硬一体的 OAK 套件来了!

从 2000 年首个开源 OpenCV Alpha 版本,到不久前刚刚发布的 OpenCV 4.4,跨平台计算机视觉库 OpenCV 在不知不觉间已经走过了 20 个年头。相信不少 IT、AI 的从业者几乎都使用过。据 CSDN 发布的《中国AI应用开发者报告2020》显示,作为计算机视…

Linux常用压缩解压命令

1.tar基本用法:1.打包文件:tar -cvf ~/test.tar ~/test 2.打包并压缩文件:tar -zcvf ~/test.tar.gz ~/test2.解包文件:先切换到要解包到的目录,然后执行:tar -xvf ~/test.tar参数详解:-c, --cre…

第二课 , 启动 ./start-all.sh

2019独角兽企业重金招聘Python工程师标准>>> 一.安装环境 1.保持第一课的基础 2.关闭防火墙 ,node1,node2,node3 service iptables stop 3.修改conf/mapred-site.xml <configuration><property><name>mapred.job.tracker</name><value&…

ASP.NET的WebFrom组件LinkButton编程

作者&#xff1a;阿虎 来自&#xff1a;yesky 在ASP.NET的WebForm组件中的LinkButton组件也是一个服务器端的组件&#xff0c;这个组件有点类似于HTML中的&#xff1c;A&#xff1e;标识符。它的主要作用是就是在ASP.NET页面中显示一个超链接。当这个链接被按动的时候&#x…

Python再夺冠,上古语言COBOL大流行,IEEE Spectrum 2020年度编程语言排行榜出炉!...

整理 | 屠敏题图 | 东方 IC出品 | CSDN 博客领域驱动技术&#xff0c;技术鞭策领域。近日&#xff0c;IEEE Spectrum 最新发布了 2020 年年度编程语言排行榜。IEEE Spectrum 编程语言排行榜一年发布一次&#xff0c;截止到今年&#xff0c;该排行榜已经连续发布了七年。与其他榜…

NSStream线程阻塞处理

http://www.10bay.com/?p149 [[session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; 因主线程有事务要处理&#xff0c;会阻塞主线程外设事件的触发&#xff1b; 解决&#xff1a; “将socket的runloopsource添加到新开的…

Python笔记

精简&#xff0c;快速&#xff0c;并持续完善。输入与输出 >>> print(Name: %s, score: %d % (Jack, 89)) Name: Jack, score: 89>>> print(Hello, world!) #逗号连接 Hello world!a raw_input("a:") #捕获原始输入&#xff0c;返回字符串 b …

资料验证的asp.net程序

<!-------资料验证&#xff1a;天乐comezxnsina.com------------> <!-------比较简单&#xff0c;以前写的&#xff0c;若有纰漏&#xff0c;请跟我联系----------> <Html> <Body bgcolor"White"> <H3>Validator(资料验证)控制元件<…

iphone UIView的一些基本方法理解

原文链接地址&#xff1a;http://www.cocoachina.com/bbs/read.php?tid38766UIView的一些基本方法理解UIView的一些基本方法理解&#xff1a;loadView、viewDidLoad、viewDidUnload、viewWillAppear、viewWillDisappear经常使用UIView以及它的子类&#xff0c;一般对于init:&a…

收藏!美国博士明确给出Python的高效学习技巧

我见过市面上很多的 Python 讲解教程和书籍&#xff0c;他们大都这样讲 Python 的&#xff1a;先从 Python 的发展历史开始&#xff0c;介绍 Python 的基本语法规则&#xff0c;Python 的 list, dict, tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0…