пользовательский пейджинг в gridview - PullRequest
3 голосов
/ 08 октября 2010

Я ищу функциональность подкачки (сверху, снизу) для gridview (или любых элементов управления привязкой данных)

Я использую .net Framework 2.0.

я хотел бы иметь указатели

спасибо

Решение: я использовал плагин jQuery jquery.tablePagination.0.1.js для своего решения

Ответы [ 4 ]

14 голосов
/ 08 октября 2010

Вы можете использовать asp: repeat для этого, с этим легко справиться с помощью управления Repeater.

This aspx page code

        <asp:Repeater ID="rptImages" runat="server" onitemcommand="rptImages_ItemCommand">
              <ItemTemplate >           
                     <div class="image"> <a ><asp:Image ID="Image1" runat="server" imageUrl=' <%# Eval("ImageUrl") %>'  /></a> </div>        
               </ItemTemplate>            
           </asp:Repeater>                    


        <asp:Repeater ID="rptPages" Runat="server" 
                            onitemcommand="rptPages_ItemCommand">
              <HeaderTemplate>
              <table cellpadding="0" cellspacing="0" border="0">
              <tr class="text">
                 <td><b style="color:White;">Page:</b>&nbsp;</td>
                 <td>
              </HeaderTemplate>
              <ItemTemplate>
                 <asp:LinkButton ID="btnPage" ForeColor="White"
                                 CommandName="Page"
                                 CommandArgument="<%#
                                 Container.DataItem %>"
                                 CssClass="text"
                                 Runat="server"><%# Container.DataItem %>
                                 </asp:LinkButton>&nbsp;
              </ItemTemplate>
              <FooterTemplate>
                 </td>
              </tr>
              </table>
              </FooterTemplate>
          </asp:Repeater>                      



this code behind page code
        public void LoadData()
            {
                try
                {
                    PagedDataSource pgitems = new PagedDataSource();
                    DataView dv = new DataView(dtImage);
                    pgitems.DataSource = dv;
                    pgitems.AllowPaging = true;
                    pgitems.PageSize = 8;
                    pgitems.CurrentPageIndex = PageNumber;
                    if (pgitems.PageCount > 1)
                    {
                        rptPages.Visible = true;
                        ArrayList pages = new ArrayList();
                        for (int i = 0; i < pgitems.PageCount; i++)
                            pages.Add((i + 1).ToString());
                        rptPages.DataSource = pages;
                        rptPages.DataBind();
                    }
                    else
                        rptPages.Visible = false;
                    rptImages.DataSource = pgitems;
                    rptImages.DataBind();
                }
                catch { }
            }       

    public int PageNumber()
        {

            get
            {
                if (ViewState["PageNumber"] != null)
                    return Convert.ToInt32(ViewState["PageNumber"]);
                else
                    return 0;
            }
            set
            {
                ViewState["PageNumber"] = value;
            }
        }

            public void itemGet()
    {
        try
        {
            var Images = dataContext.sp_getCards(categoryId);

            PagedDataSource pds = new PagedDataSource();
            pds.DataSource = Images;
            pds.AllowCustomPaging = true;
            pds.AllowPaging = true;
            pds.PageSize = 8;

            pds.CurrentPageIndex = CurrentPage;

            lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of "
                + pds.PageCount.ToString();


            // Disable Prev or Next buttons if necessary
            //cmdPrev.Enabled = !pds.IsFirstPage;
            //cmdNext.Enabled = !pds.IsLastPage;

            rptImages.DataSource = pds;
            rptImages.DataBind();
        }
        catch { }

    }


    protected void rptPages_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            try
            {
                PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
                LoadData();
            }
            catch { }
        }
1 голос
/ 19 октября 2010

я использовал плагин jQuery jquery.tablePagination.0.1.js для моего решения

см. эту ссылку

1 голос
/ 08 октября 2010

Это вряд ли будет достижимо в GridView, так как в нем используется жесткая структура таблиц только с одним шаблоном пейджера.Вам нужно два - один сверху и один снизу.Для такого управления вам нужен Repeater (.NET 2.0) или ListView (.NET 3.5).Когда у вас есть кнопки, вы можете обрабатывать их события щелчка или команды и привязывать свою сетку к вновь выбранному набору данных.В повторителе вам, вероятно, придется где-то хранить текущую страницу и количество элементов на странице (ViewState).Если вы хотите использовать пейджинг на стороне jQuery (на стороне клиента) с частичным рендерингом, вам нужно обработать клик на стороне клиента и добавить вызов AJAX для получения новой страницы на основе нажатой кнопки.

0 голосов
/ 08 октября 2010

Как уже говорили другие, я не думаю, что это хорошая работа для GridView.Я бы посмотрел на ListView или Repeater, так как они лучше подходят для чего-то подобного и довольно легко добавляют пользовательскую нумерацию страниц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...