6

ページネーションのために、WebプロジェクトでListViewとDataPagerを使用しています。正常に動作しますが、ページ付け用に生成されたHTMLは、いくつかのハイパーリンクを含む単なるスパンです。

HTMLをカスタマイズして、代わりに順序付けられていないリストにリンクを表示したかった(ul)。

誰もがこれを行う方法を知っていますか?私が考えることができる1つの方法は、CSSFriendlyアダプターですが、もっと簡単な方法があれば、それはしたくありません。

編集:誰かがテンプレートにコントロールを作成するために必要な正確な手順を手伝ってもらえますか?気が狂ってすみませんが、グーグルが多かったのに、この部分がわかりません。

4

2 に答える 2

9

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

于 2009-06-12T16:16:29.560 に答える
1

jQueryまたはJavaScriptを使用します。datapagerは&nbsp;それらの間にリンクをレンダリングするため、レンダリングされたhtmlを取得して分割し&nbsp;、ulを作成して、アイテムをliとして追加します。

 $(function() {
        var pagerControl = <%= "'#" & DataPager1.ClientId & "';" %>
        $(pagerControl).hide(); 
         var items = $(pagerControl).html().split('&nbsp;');
         $.each(items, function(index, value) { if (value.length > 0)$('#pagination').append('<li>' + value + '</li>'); });
    });
于 2010-12-02T19:58:06.647 に答える