Repeater使用技巧

简介:

一、在ItemDataBound事件里面动态改变Repeater控件里面的html元素

如:

<asp:Repeater ID="Repeater1" runat="server" 
onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<table>
<tr id="row" runat="server">
<td>
<%#DataBinder.Eval(Container.DataItem,"title")%>
</td>
</tr>

<tr id="row2" runat="server">
<td>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>

后台程序
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
int i = e.Item.ItemIndex;
if (i % 2 == 0)
{
HtmlTableRow row = (HtmlTableRow)e.Item.FindControl("row");
if (row != null)
{
row.BgColor = System.Drawing.Color.Black.ToString();
}
}

HtmlTableRow row2 = (HtmlTableRow)e.Item.FindControl("row2");
if (row2 != null)
{
//在这里就可以对row2这个html的元素进行各种各样的赋值了
}
}

 

二、在Repeater控件里面嵌套Repeater控件
<asp:Repeater runat="server" ID="rp1" OnItemDataBound="rp1_ItemDataBound">
<ItemTemplate>
<tr>
<td >
<%#DataBinder.Eval(Container.DataItem,"title")%>

</td>
</tr>
<tr>
<td>
<div >
<asp:Repeater runat="server" ID="rp1">
<ItemTemplate>

<%#DataBinder.Eval(Container.DataItem,"title2")%>
</ItemTemplate>
</asp:Repeater>
</div>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>

 

CS代码

private void Bind()
{ ……

this.rptypelist.DataSource = dt;
this.rptypelist.DataBind();
}
protected void rp1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{

//判断里层repeater处于外层repeater的哪个位置( AlternatingItemTemplate,FooterTemplate,HeaderTemplate,,ItemTemplate,SeparatorTemplate)
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater rep 
= e.Item.FindControl("rp2"as Repeater;//找到里层的repeater对象
DataRowView rowv = (DataRowView)e.Item.DataItem;//找到外层Repeater关联的数据项 
int title= Convert.ToInt32(rowv["title"]);

……
rep.DataSource = dt2;

rep.DataBind();
}
}

 

三、添加序号的4种方法

1、<itemtemplate>
<tr><td>
<%# Container.ItemIndex + 1%>
</td></tr>
</itemtemplate> 
2、<itemtemplate>
<tr><td>
<%# this.rpResult.Items.Count + 1%>
</td></tr>
</itemtemplate>

3、在<form></form>中添加<Label ID="dd" ></Label>

<body nload="show()">

<Script. Language="JScript">
function show()
{
var bj = document.all.tags("LABEL");
for (i=0;i<obj.length;i++)
{
document.all["dd"][i].innerHTML=i+1;
}
}
</script>

4、后台实现方法
后台实现方法:

在.aspx里添加<asp:Label id="Label1" Runat="server"></asp:Label>

在.cs里添加

** void InitializeComponent()

this.Repeater1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
this.Load += new System.EventHandler(this.Page_Load);

}

** void Repeater1_ItemDataBound(object source, System.Web.UI.WebControls.RepeaterItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
((Label)e.Item.FindControl("Label1")).Text = Convert.ToString(e.Item.ItemIndex + 1);
}
}



本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1081591

相关文章
|
11月前
|
开发框架 JavaScript 前端开发
Asp.net 控件用法汇总-RadioButtonList、DropDownList、button、Checkbox...
Asp.net 控件用法汇总-RadioButtonList、DropDownList、button、Checkbox...
66 0
|
11月前
|
开发框架 JavaScript .NET
Asp.net 控件用法汇总-RadioButtonList、DropDownList、button、Checkbox...(续)
Asp.net 控件用法汇总-RadioButtonList、DropDownList、button、Checkbox...(续)
99 0
|
.NET C# 开发框架