Repeater控件和DataList控件,可以用来一次显示一组数据项。比如,可以用它们显示一个数据表中的所有行。   Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出格式。   DataList控件也由模板驱动,和Repeater不同的是,DataList默认输出是HTML表格,DataList将数据源中的记录输出为HTML表格一个个的单元格。

Repeater支持以下5种模板       ● ItemTemplate : 对每一个数据项进行格式设置 (必须的添加项)       ● AlternatingItemTemplate : 对交替数据项进行格式设置       ● SeparatorTemplate : 对分隔符进行格式设置       ● HeaderTemplate : 对页眉进行格式设置       ● FooterTemplate : 对页脚进行格式设置

 Repeater控件有以下事件:       ● DataBinding : Repeater控件绑定到数据源时触发       ● ItemCommand : Repeater控件中的子控件触发事件时触发       ● ItemCreated : 创建Repeater每个项目时触发       ● ItemDataBound : Repeater控件的每个项目绑定数据时触发

 //table画横线样式表table画横线样式表table画横线样式表table画横线样式表
table.tabData{border-collapse: collapse;border: 1px solid #9CF;text-align:center;}
table.tabData thead td,table.set_border th{font-weight:bold;background-color:White;}
table.tabData tr:nth-child(even){background-color:#EAF2D3;}
table.tabData td,table.border th{border:1px solid #C3C3C3;text-align:center;}
//repeater画横线样式表
1 <asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<table class="tabData">
<tr class="tr_head">
<th style="width: 200px; text-align: center;">

</th>
<th style="width: 200px; text-align: center;">

</th>
<th style="width: 200px; text-align: center;">

</th>
<th style="width: 200px; text-align: center;">
查看/修改
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style='background-color: <%#(Container.ItemIndex%2==0)?"#FFFFF;":"#fcf3f4"%>'
onmouseover="change_colorOver(this)" onmouseout="change_colorOut(this)">
<td>
<%#Eval("XianID")%>
</td>
<td>
<%#GetNameByID(Eval("XiangID"))%>
</td>
<td>
<%#Eval("strName")%>
</td>
<td>
<input type="button" value="查看/修改" onclick="ShowFrm(<%#Eval("ID") %>)" />
</td>
<%-- <td><input type="button" value="删除" onclick="FunDelete(<%#Eval("ID") %>)" /></td>--%>
</tr>
</ItemTemplate>
<FooterTemplate>
<!--底部模板-->
</table>
<!--表格结束部分-->
</FooterTemplate>
</asp:Repeater> repeater 绑定示例文件

同时需要在后台绑定repeater的数据源

  Container.ItemIndex为当前行的索引,从0开始

  style='background-color: <%#(Container.ItemIndex%2==0)?"#FFFFF;":"#fcf3f4"%>'  设置了repeater的隔行变色

  onmouseover="change_colorOver(this)" onmouseout="change_colorOut(this)" 设置了repeater的鼠标悬浮变色

js方法如下(colorName为页面中的一个隐藏的input标签,用于保存onmouseover时的颜色值)

<script>

  function change_colorOver(e) {       var oldColor = e.style.backgroundColor;       document.getElementById("colorName").value = oldColor;       e.style.backgroundColor = "#b9bace";   }   function change_colorOut(e) {       e.style.backgroundColor = document.getElementById("colorName").value;   }

</script>

嵌套Repeater示例

 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Web.BasicData.Data.WebForm1" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 <html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="../../Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script type="text/javascript">
//表格鼠标悬停换色
function change_colorOver(e) {
var oldColor = e.style.backgroundColor;
document.getElementById("colorName").value = oldColor;
e.style.backgroundColor = "#b9bace";
}
function change_colorOut(e) {
e.style.backgroundColor = document.getElementById("colorName").value;
}
//显示和隐藏子菜单
function Ctoggle(obj) {
if (obj.alt == "open") {
obj.alt = "close";
obj.src = "../../images/minus.gif";
$(obj).parent().parent().next().fadeIn();
} else {
obj.alt = "open";
obj.src = "../../images/plus.gif";
$(obj).parent().parent().next().fadeOut();
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Repeater ID="R1" runat="server" onitemdatabound="R1_ItemDataBound">
<HeaderTemplate>
<table class="tabData">
<tr class="tr_head">
<th style="width: 200px; text-align: center;">

</th>
<th style="width: 200px; text-align: center;">

</th>
<th style="width: 200px; text-align: center;">
查看/修改
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style='background-color: <%#(Container.ItemIndex%2==0)?"#ccc;":"#fcf3f4"%>'
onmouseover="change_colorOver(this)" onmouseout="change_colorOut(this)">
<td>
<img alt="open" src="../../images/plus.gif" onclick="Ctoggle(this)" /> <%#Eval("XianID")%>
</td>
<td>
<%#Eval("strName")%>
</td>
<td>
<input type="button" value="查看/修改" onclick="ShowFrm(<%#Eval("ID") %>)" />
</td> </tr>
<tr style="display:none">
<td colspan="">
<asp:Repeater ID="R2" runat="server" > <ItemTemplate>
<table class="tabData">
<tr style='background-color: <%#(Container.ItemIndex%2==0)?"#ccc;":"#fcf3f4"%>'
onmouseover="change_colorOver(this)" onmouseout="change_colorOut(this)">
<td style="width:100px"></td>
<td style="width:100px;">
<%#Eval("XiangID")%>
</td>
<td style="width:200px;">
<%#Eval("strName")%>
</td>
<td style="width:200px;">
<input type="button" value="查看/修改" onclick="ShowFrm(<%#Eval("ID") %>)" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
<!--底部模板-->
</table>
<!--表格结束部分-->
</FooterTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
<!--底部模板-->
</table>
<!--表格结束部分-->
</FooterTemplate>
</asp:Repeater>
</div>
<div id="divhidd" style=" width:100px; height:100px; background-color:#aaa; display:none;"></div>
</form>
<%--定义背景色的隐藏域--%>
<input type="hidden" id="colorName" value="" />
</body>
</html>

前台代码

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Data; namespace Web.BasicData.Data
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindData();
}
} public void BindData()
{
StringBuilder strSql = new StringBuilder(); strSql.Append(" SELECT A.ID, B.strName AS XianID,A.strName FROM dbo.BD_Address_Xiang A INNER JOIN dbo.BD_Address_Xian B ON A.XianID=B.ID");
DataTable dt = SQLHelper.ExecuteDataTable(strSql.ToString());
if (dt != null && dt.Rows.Count != )
{
this.R1.DataSource = dt.DefaultView;
this.R1.DataBind();
}
} protected void R1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep = e.Item.FindControl("R2") as Repeater;
DataRowView rowv = (DataRowView)e.Item.DataItem;
int XiangID = Convert.ToInt32(rowv["ID"]);
StringBuilder strSql = new StringBuilder(); strSql.Append(" SELECT A.ID,B.strName AS XiangID,A.strName AS strName");
strSql.Append(" FROM dbo.BD_Address_Cun A INNER JOIN dbo.BD_Address_Xiang B ON A.XiangID=B.ID");
strSql.Append(" WHERE B.ID="+XiangID);
DataTable dt = SQLHelper.ExecuteDataTable(strSql.ToString());
if (dt != null && dt.Rows.Count != )
{
rep.DataSource = dt.DefaultView;
rep.DataBind();
}
}
}
}
} 后台代码

后台代码

后台: 启用外层Repeater的ItemDataBound事件 ,在ItemDataBound事件中找到内层的Repeater,并绑定内层的Repeater

前台: 外层的Repeater的ItemTemplate分为两行;第一行绑定一个数据表的数据信息,和添加一个显示控制按钮

    第二行中嵌入内层的Repeater(样式可以独立设置)

      然后在js文件中添加子菜单的显示和隐藏代码

asp.net repeater控件操作的更多相关文章

  1. [ASP.NET]asp.net Repeater控件的使用方法

    asp.net Repeater控件的使用方法 -- : 4770人阅读 评论() 收藏 举报 asp.netserveraspdatasetdeletexhtml 今天学习了,Repeater控件 ...

  2. Asp.net Repeater控件的绑定与操作

    由于repeater 控件具有的一个特性--循环 <ItemTemplate>的内容,Repeater 控件里的某个元素对象的绑定与获取,不像平常的,直接使用控件的 id 便可以给该控件进 ...

  3. ASP.NET- 查找Repeater控件中嵌套的控件

    如何在Repeater的HeaderTemplate和FooterTemplate模板中寻找控件?在Repeater的ItemTemplate模板中的控件,我们可以用Items属性来遍历行并用Find ...

  4. Asp.net Repeater控件

    Repeater控件和DataList控件,可以用来一次显示一组数据项.比如,可以用它们显示一个数据表中的所有行.     Repeater控件完全由模板驱动,提供了最大的灵活性,可以任意设置它的输出 ...

  5. ASP.NET Repeater控件实现简单分页

    早上,有看MSDN,看到了 PagedDataSource 类 http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.pa ...

  6. ASP.NET Repeater 控件分页

    protected void Page_Load(object sender, EventArgs e) { HttpContext context = HttpContext.Current; co ...

  7. ASP.NET用户控件操作ASPX页面

    定义一个不含数据的事件处理方法 用户控件 public event EventHandler Click; protected void Button1_Click(object sender, Ev ...

  8. ASP.NET - Repeater控件删除按钮,点击删除信息

    前台代码: <!--类别信息--> <div id ="newnews" class ="Frm"> <h4>类别管理< ...

  9. ASP.NET -- repeater控件的使用

    转载自网络-原网址[http://blog.csdn.net/haitaodoit/article/details/7021214] repeater绑定数据: protected void Page ...

随机推荐

  1. 创建和管理表【weber出品必属精品】

    创建表 必须有 : 1. CREATE TABLE 的权限 SQL> conn /as sysdba 已连接. SQL> create user test default tablespa ...

  2. 阐述Lambada表达式

    在C#2.0引入匿名方法之前,声明委托的唯一方法就是使用命名方法,C#2.0之后的C#3.0中开始引入了Lambda表达式取代了匿名方法. 匿名方法 要说Lambda必然离不开匿名方法,实际上,Lam ...

  3. mercurial(Hg) Server 搭建 过程记录

    mercurial(Hg) Server 搭建 过程记录 1.  环境说明 只是测试搭建,环境为本机开发环境:win 8.1 + IIS8.5 软件准备: 2.  软件安装 先安装Python2.7, ...

  4. CODEVS 1062 路由选择

    1062 路由选择  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 在网络通信中,经常需要求最短路径.但完全用最短路径传 ...

  5. Cocos2d-x 3.0 场景切换

    场景切换要用到导演类Director,一般有两种方式,大多数是用替换场景(replaceScene),也可以用进栈(pushScene)出栈(popScene)的方式进行场景的替换. 场景切换代码: ...

  6. Java中list<Object>集合去重实例

    一:Java中list去重的方法很多,下面说一下其中一种方法:把list里的对象遍历一遍,用list.contain(),如果不存在就放入到另外一个list集合中: 二:实例 这里需要注意的是:使用c ...

  7. PHP内置Web Server探究(一)启动Cli_Server

    自PHP5.4之后 PHP内置了一个Web 服务器(cli_server),类似于Python的内置server一样,方便我们开发阶段的调试 主要使用场景: 1,没有搭建nginx或apache等第三 ...

  8. destoon实现商铺管理主页设置增加新菜单的方法

    1.打开/lang/zh-cn/home.inc.php,找到9,10行替换如下: $HMENU = $DMENU = array('公司介绍', '供应产品', '采购清单', '新闻中心', '荣 ...

  9. package.json 的语法解释

    https://www.ijser.cn/npm-package-json-document/ 形式可以有如下多种: version 严格匹配某个版本 >version 必须大于某个版本 > ...

  10. Unity3D 定时发射子弹

    using UnityEngine; public class example : MonoBehaviour { public GameObject projectilePrefab; public ...