一、在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); } } 四、获取每行的指定字段的值 用一个Label 控件来保存id 值,然后在后台可以通过获取这个Label来获取id 例如: <asp:repeater runat="server" id="rpList" OnItemDataBound="Repeater1_ItemDataBound"> <ItemTemplate> <tr> <td > <asp:Label ID="lblPID" runat="server" Text="<%#Eval("id")%>" ></asp:Label> </td> </tr> </ItemTemplate> </asp:repeater> cs文件里: protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e) { foreach (RepeaterItem re in Repeater1.Items) { Label l = re.FindControl("lblPID") as Label; //这里写你的Label的ID } }