天天看點

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">

</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">

<tr>

<td >

<div >

<asp:Repeater runat="server" ID="rp1">

<%#DataBinder.Eval(Container.DataItem,"title2")%>

</div>

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>

<%# this.rpResult.Items.Count + 1%>

</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

繼續閱讀