Если какая-либо функциональность класса тесно связана с каким-либо интерфейсом в этой ситуации, мы объявляем класс внутри интерфейса.
Некоторое время также полезно обеспечить реализацию по умолчанию абстрактного метода внутри интерфейса.
Вы можете использовать PagerTemplate для обозначения разметки, которую вы хотите использовать для управления разбиением по страницам. Я не совсем уверен, что вы пытаетесь сделать с точки зрения отображения информации подкачки в виде ul / li, но этого должно быть достаточно, чтобы вы пошли по правильному пути. Извините за код, уходящий в сторону ...
пример:
<asp:DataPager ID="DataPager1" runat="server" PagedControlID="gridInvoiceHistory"
PageSize="20">
<Fields>
<asp:TemplatePagerField>
<PagerTemplate>
Page
<asp:Label runat="server" ID="labelCurrentPage" Text="<%# Container.TotalRowCount > 0 ? (Container.StartRowIndex / Container.PageSize) + 1 : 0 %>" />
of
<asp:Label runat="server" ID="labelTotalPages" Text="<%# Math.Ceiling ((double)Container.TotalRowCount / Container.PageSize) %>" />
</PagerTemplate>
</asp:TemplatePagerField>
РЕДАКТИРОВАТЬ: вот более подробное начало решения для этого:
<asp:TemplatePagerField>
<PagerTemplate>
<asp:BulletedList ID="listPages" runat="server"
DisplayMode="LinkButton" onclick="listPages_Click">
</asp:BulletedList>
</PagerTemplate>
</asp:TemplatePagerField>
И вот что у вас будет в коде программной части:
protected void listPages_Click(object sender, BulletedListEventArgs e)
{
var pageNo = int.Parse((sender as BulletedList).Items[e.Index].Text);
var startIndex = (pageNo - 1) * DataPager1.PageSize;
DataPager1.SetPageProperties(startIndex, DataPager1.PageSize, true);
}
Вам остается выполнить привязку данных маркированного списка к методу, который получает счетчик страниц и возвращает список IEnumerable текста, который вы хотите использовать для ссылок на страницы. Стандартное предупреждение: это пример кода, и его, вероятно, не следует использовать в производственной среде без тщательной проверки! :