如何获取Footer中的子控件
真的许久没更新blog了,不是无所事事,确实是因为急着赶快完成工作
事实上这个问题出现在我为Repeater控件添加分页功能时。情况是这样的:
Panel pagepanel = (Panel)(typecontracts.Controls[typecontracts.Controls.Count-1].FindControl("PageRow"));
事实上这个问题出现在我为Repeater控件添加分页功能时。情况是这样的:
<footertemplate>
<tr>
<td colspan="9">
<asp:panel ID="PageRow" Runat="server" EnableViewState="True">
共
<asp:label ID="PageRowsCount" Runat="server"></asp:label>条记录,当前第
<asp:label ID="PageIndex" Runat="server"></asp:label>页/
<asp:label ID="PageCount" Runat="server"></asp:label>页
</asp:panel>
</td>
</tr>
</footertemplate>
<tr>
<td colspan="9">
<asp:panel ID="PageRow" Runat="server" EnableViewState="True">
共
<asp:label ID="PageRowsCount" Runat="server"></asp:label>条记录,当前第
<asp:label ID="PageIndex" Runat="server"></asp:label>页/
<asp:label ID="PageCount" Runat="server"></asp:label>页
</asp:panel>
</td>
</tr>
</footertemplate>
老规矩,多余的代码就不说了
这个Panel出于两方面考虑,一方面作为容器以获得里面的几个控件,另一方面使用它的div套用样式。
但是奇怪的是无论如何在Repeater里FindControl都没法得到它。
别着急,Controls实际上是Repeater的数据行集,
Footer总是在最后一个,So...
![](/Images/OutliningIndicators/None.gif)
Label pagerowscount = (Label)pagepanel.FindControl("PageRowsCount");
int pagecount = list.RowsCount % pagesize > 0 ? list.RowsCount/pagesize + 1 : list.RowsCount/pagesize;
((Label)pagepanel.FindControl("PageCount")).Text = pagecount.ToString();
((Label)pagepanel.FindControl("PageIndex")).Text = ( list.PageIndex+1 ).ToString();
for ( int i=0; i< pagecount; i++ )
{
System.Web.UI.WebControls.HyperLink link = new HyperLink();
link.Text = (i+1).ToString();
link.NavigateUrl="index.aspx?tid=" + contracttype.TypeID + "&sid=" + DContractStates.SelectedValue + "&pid=" + (i*pagesize+1).ToString();
pagepanel.Controls.Add( link );
}
pagerowscount.Text = list.RowsCount.ToString();
int pagecount = list.RowsCount % pagesize > 0 ? list.RowsCount/pagesize + 1 : list.RowsCount/pagesize;
((Label)pagepanel.FindControl("PageCount")).Text = pagecount.ToString();
((Label)pagepanel.FindControl("PageIndex")).Text = ( list.PageIndex+1 ).ToString();
for ( int i=0; i< pagecount; i++ )
{
System.Web.UI.WebControls.HyperLink link = new HyperLink();
link.Text = (i+1).ToString();
link.NavigateUrl="index.aspx?tid=" + contracttype.TypeID + "&sid=" + DContractStates.SelectedValue + "&pid=" + (i*pagesize+1).ToString();
pagepanel.Controls.Add( link );
}
pagerowscount.Text = list.RowsCount.ToString();