У меня проблема с тем, что у меня есть 2 DataPager на одной странице, связанные с тем же ListView. Все работает нормально, кроме «нижнего» или 2-го пейджера, похоже, не работает. Номера страниц генерируются, но нажатие на них ничего не делает. Если я скопирую «нижний» пейджер над «верхним» пейджером, то этот пейджер будет работать, а тот, что ниже, - нет. Кажется, работает только пейджер, который появляется первым:
<asp:DataPager ID="dpPagerTop" runat="server" PagedControlID="lvOutput" QueryStringField="pageNumber">
<Fields>
<asp:NumericPagerField NextPageText="Next" PreviousPageText="Previous" />
</Fields>
</asp:DataPager>
<asp:DataPager ID="dpPagerBottom" runat="server" PagedControlID="lvOutput" QueryStringField="pageNumber">
<Fields>
<asp:NumericPagerField NextPageText="Next" PreviousPageText="Previous" />
</Fields>
</asp:DataPager>
<asp:ListView ID="lvOutput" runat="server" OnPagePropertiesChanged="lvOutput_PagePropertiesChanged">
<LayoutTemplate>
<asp:PlaceHolder id="itemPlaceholder" runat="server" />
</LayoutTemplate>
<ItemTemplate>
<a href="<%# Eval("Link") %>" title="<%# Eval("Title") %>"><%# Eval("Title") %></a>
</ItemTemplate>
</asp:ListView>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
dpPagerTop.SetPageProperties(Request.QueryString["pageNumber"].ToString(), 25, false);
dpPagerBottom.SetPageProperties(Request.QueryString["pageNumber"].ToString(), 25, false);
lvOutput.DataSource = [datasource];
lvOutput.DataBind();
}
}
protected void lvOutput_PagePropertiesChanged(object sender, EventArgs e)
{
lvOutput.DataBind();
}
UPDATE:
Поразмышляя над этим еще раз, я решил, что оба пейджера будут работать, если SetPageProperties имеет правильные параметры. Первый параметр должен быть числом для запуска результатов, а второй должен быть числом для отображения результатов. Тем не менее, я получаю неправильные цифры для отображения. У меня есть ровно 100 записей, и я хочу отображать 25 результатов на странице. Если я жестко закодировал:
dpPagerTop.SetPageProperties(25, 25, true);
dpPagerBottom.SetPageProperties(25, 25, true);
Это должна быть вторая страница результатов, и результаты показывают 26-50 . Тем не менее, нижний пейджер не работает.
Теперь, если я жестко закодировал:
dpPagerTop.SetPageProperties(26, 25, true);
dpPagerBottom.SetPageProperties(26, 25, true);
Оба пейджера работают как следует, но число результатов идет от 27-51 .
Может кто-нибудь воссоздать это, это сводит меня с ума?!?!?
ОБНОВЛЕНИЕ 2:
Я думаю, что заставил его работать, установив свойства страницы ДО привязки к ListView.