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リストを返すメソッドに対して、箇条書きでデータバインディングを実行する必要があります。標準の警告:これはサンプルコードであり、徹底的な検証なしに本番環境で使用するべきではありません。:)