Вы можете использовать шаблон 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 текста, который вы хотите для ссылок на страницы. Стандартное предупреждение: это пример кода, и, вероятно, его не следует использовать в производственной среде без тщательной проверки! :)