在第二个DataBind()

时间:2015-05-22 03:33:25

标签: asp.net listview datapager

我在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>

0 个答案:

没有答案