Настроить ASP.Net DataPager сгенерированный HTML - PullRequest
6 голосов
/ 12 июня 2009

Я использую ListView и DataPager в своем веб-проекте для разбивки на страницы. Он работает нормально, но сгенерированный HTML для нумерации страниц - это просто диапазон, содержащий несколько гиперссылок.

Я хотел настроить HTML и отобразить ссылки в неупорядоченном списке (ul).

Кто-нибудь знает, как это можно сделать? Я могу думать только об адаптерах CSSFriendly, но я не хочу этого делать, если есть более простой способ.

Редактировать: Может ли кто-нибудь помочь мне с точными шагами, необходимыми для создания элементов управления в шаблоне? Извините за глупость, но я не могу понять эту часть, несмотря на обширный поиск в Google.

Ответы [ 2 ]

8 голосов
/ 12 июня 2009

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

1 голос
/ 02 декабря 2010

используйте 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>'); });
    });
...