存在问题:
我们不能在代码页中直接用服器控件的ID访问并操作Repeater控件中有脚底模版中的服服器控件
解决方法:
用控件的FindControl(id)方法来搜索到该控件后,就可以对该服务器控件进行操作了。
例如:
Repeater代码:
<asp:Repeater ID="Repeater2" runat="server" OnItemCommand="Repeater2_ItemCommand">
<HeaderTemplate >
<div style="width:100%; height:20; color:Green; background-color:Green;"></div>
</HeaderTemplate>
<ItemTemplate>
<table>
<tr>
<td>
<label id="id"><%# DataBinder.Eval(Container.DataItem,"CustomerID")%></label>
<label id="Name"><%# DataBinder.Eval(Container.DataItem,"CompanyName")%></label>
</td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate >
<asp:LinkButton ID="Next" Text="Next" runat="server"></asp:LinkButton>
<asp:LinkButton ID="Previous" Text="Previous" runat="server"></asp:LinkButton>
<asp:DropDownList ID="PageCount" runat="server"></asp:DropDownList>
</FooterTemplate>
</asp:Repeater>
要访问到该Repeater控件的脚底模版中的 ID="PageCount" 控件。
代码如下:
DropDownList ddl = (DropDownList)this.Repeater2.Controls[this.Repeater2.Controls.Count - 1].FindControl("PageCount");
if(ddl!=null)
{
for (int i = 0; i < PDS.PageCount;i++ )
{
ddl.Items.Add(i.ToString());
}
}
注意:一定要在Repeater控件中的最好了个服务器中才能查找到,要理清其层次关系,要不然就搜索不到了。