我在ASP.Net页面中有一个ListView对象,其中有两个dataPagers用于同一个ListView对象。一个位于页面顶部,另一个位于底部。两者都具有相同的属性,并且都显示在页面的初始加载上就好了。
当允许用户在列表中搜索项目时,通常会有意隐藏dataPagers,因为它们不适用于短结果列表。但是,当我“重置”过滤条件以再次显示所有记录时,仅显示页面底部的dataPager。页面顶部的dataPager保持隐藏,即使它的属性设置回可见。这听起来很像一个逻辑错误,但在经过几次代码并试图找到错误无济于事之后,我想知道我可能会误解或没有看到。
任何帮助都将不胜感激。
<asp:DataPager ID="DataPagerHeader" runat="server" PagedControlID="courseListView" PageSize="20" >
<Fields>
<asp:NumericPagerField ButtonType="Button" />
</Fields>
</asp:DataPager>
<asp:ListView ID="courseListView" runat="server" datasourceid="CoursesDataSource" OnSorting="courseListView_Sorting" OnDataBound="courseListView_DataBound" OnItemDataBound="courseListView_ItemDataBound">
<LayoutTemplate>
...
</LayoutTemplate>
<ItemTemplate>
...
</ItemTemplate>
</asp:ListView>
<asp:DataPager ID="DataPagerFooter" runat="server" PagedControlID="courseListView" PageSize="20">
<Fields>
<asp:NumericPagerField ButtonType="Button" />
</Fields>
</asp:DataPager>
隐藏/显示数据抓取器对象的代码:
protected void courseListView_DataBound(object sender, EventArgs e)
{
DataPagerFooter.Visible = (DataPagerFooter.PageSize < DataPagerFooter.TotalRowCount);
DataPagerHeader.Visible = (DataPagerHeader.PageSize < DataPagerHeader.TotalRowCount);
}
使用Firebug查看源代码时,您会看到dataPager应该在的位置。请注意标签之间缺少标签。
<span id="ctl00_mainPlaceHolder_DataPagerHeader"></span>