【问题标题】:custom paging in gridviewgridview中的自定义分页
【发布时间】:2011-04-22 17:58:20
【问题描述】:

我正在寻找 gridview(或任何数据绑定控件)的分页(顶部、底部)功能

我正在使用 .net 框架 2.0。

我想要指点

谢谢

解决方案: 我使用 jQuery 插件 jquery.tablePagination.0.1.js 作为我的解决方案

【问题讨论】:

    标签: c# asp.net jquery css gridview


    【解决方案1】:

    你可以 asp:repeater 这个可以很容易地被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 { }
            }
    

    【讨论】:

      【解决方案2】:

      这在 GridView 中很难实现,因为它使用只有单个页面模板的刚性表格结构。您需要两个 - 一个在顶部,一个在底部。对于此类控制,您需要 Repeater (.NET 2.0) 或 ListView (.NET 3.5)。放置按钮后,您可以处理它们的单击或命令事件,并将网格重新绑定到新选择的数据集。在转发器中,您可能必须在某处(ViewState)存储当前页面和每页的项目数。如果您想要基于 jQuery 的分页(客户端)部分呈现,您需要处理客户端的 onclick 并添加 AJAX 调用以获取基于推送按钮的新页面。

      【讨论】:

      • 嗨 Ladislav,感谢您的回复。如果 gridview 不适合,那么我可以使用任何其他控件。请提供一些适合上述功能的脚本。
      【解决方案3】:

      我使用 jQuery 插件 jquery.tablePagination.0.1.js 作为我的解决方案

      参考this link

      【讨论】:

        【解决方案4】:

        正如其他人所说,我认为这对 GridView 来说不是一件好事。我会看看 ListView 或 Repeater,因为它们更适合这样的事情,并且很容易添加自定义分页。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-24
          • 1970-01-01
          • 1970-01-01
          • 2011-03-27
          • 1970-01-01
          • 1970-01-01
          • 2015-04-04
          • 2019-12-03
          相关资源
          最近更新 更多