• gridview自定义分页


         gridview里虽然有自动分页的功能,但是我们其实经常感觉不是很完善,比如,他没有页面直接跳转的功能,就是输入页数,然后跳转。还有他也没有显示记录的条数。其实,这些信息有时候是非常重要的。因此我们非常有必要实现这个功能。下面,我就讲述下如何实现自定义分页的。
    一、首先要将gridview设置成可以分页,然后我们在增加如下代码:
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="98%" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="20">
                            
    <Columns>
                                
    <asp:BoundField DataField="UserName" HeaderText="登陆用户名" >
                                    
    <ItemStyle CssClass="griditem" />
                                    
    <HeaderStyle CssClass="gridhead" />
                                
    </asp:BoundField>
                                
    <asp:BoundField DataField="Name" HeaderText="真实姓名">
                                    
    <ItemStyle CssClass="griditem" />
                                    
    <HeaderStyle CssClass="gridhead" />
                                
    </asp:BoundField>
                                
    <asp:BoundField DataField="PostName" HeaderText="职位" >
                                 
    <ItemStyle CssClass="griditem" />
                                    
    <HeaderStyle CssClass="gridhead" />
                                
    </asp:BoundField>
                                
    <asp:BoundField DataField="OrgName" HeaderText="组织" >
                                 
    <ItemStyle CssClass="griditem" />
                                    
    <HeaderStyle CssClass="gridhead" />
                                
    </asp:BoundField>
                                
    <asp:BoundField DataField="RoleName" HeaderText="角色" >
                                 
    <ItemStyle CssClass="griditem" />
                                    
    <HeaderStyle CssClass="gridhead" />
                                
    </asp:BoundField>
                                
    <asp:BoundField DataField="StateStr" HeaderText="当前状态" >
                                 
    <ItemStyle CssClass="griditem" />
                                    
    <HeaderStyle CssClass="gridhead" />
                                
    </asp:BoundField>
                                
    <asp:TemplateField HeaderText="操作">
                                    
    <ItemTemplate>
                                        
    <asp:LinkButton ID="LinkButtonEdit" runat="server" CommandArgument='<%# Eval("UserID") %>' OnClick="LinkButtonEdit_Click">编辑</asp:LinkButton>
                                        
    &nbsp;
                                        
    <asp:LinkButton ID="LinkButtonDelete" runat="server" CommandArgument='<%# Eval("UserID") %>' OnClick="LinkButtonDelete_Click">删除</asp:LinkButton>
                                    
    </ItemTemplate>
                                     
    <ItemStyle CssClass="griditem" />
                                    
    <HeaderStyle CssClass="gridhead" />
                                
    </asp:TemplateField>
                            
    </Columns>
                             
    <EmptyDataTemplate>
                                
    <table  border='0' cellpadding='0' cellspacing='0' style='border-right: coral 1px dotted;border-top: coral 1px dotted; border-left: coral 1px dotted; border-bottom: coral 1px dotted;background-color: #ffffff;200px;height:55px;'><tr><td align='center' style="height: 53px"><font color='coral'><b>没有任何数据<b></font></B></B></td></tr></table>
                            
    </EmptyDataTemplate>
                            <PagerTemplate>
                                <table border="0" cellpadding="0" cellspacing="0" style=" 99%; height: 15px">
                                    <tr>
                                        <td style=" 100px; height: 13px">
                                            </td>
                                        <td style=" 100px; height: 13px">
                                            <div style=" 286px; height: 7px; font-size:12px;">                                          
                                                            总共                                                 
                                                        <%=RecordCount%>                                                   
                                                            条记录 当前第                                                  
                                                            <%#((GridView)Container.NamingContainer).PageIndex+1%>/<%#((GridView)Container.NamingContainer).PageCount %>
                                                            页
                                                 
                                            </div>
                                        </td>
                                        <td style=" 100px; height: 13px">
                                            <div style=" 252px; height: 8px; text-align: right">
                                                <asp:LinkButton ID="FirstPage" runat="server" CommandArgument="First" CommandName="Page"  Enable="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">第一页</asp:LinkButton>                                           
                                                <asp:LinkButton ID="PreviousPage" runat="server" CommandArgument="Prev" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>
                                                 <asp:LinkButton ID="NextPage" runat="server" CommandArgument="Next" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>
                                                <asp:LinkButton ID="LastPage" runat="server" CommandArgument="Last" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">最后一页</asp:LinkButton>
                                                <asp:TextBox ID="TextGotoPage" runat="server" CssClass="pageeditbox"></asp:TextBox>
                                                <asp:Button ID="PageGo" causesvalidation="False" commandargument="-1" commandname="Page" runat="server" CssClass="pagebutton" Text="Go" />
                                            </div>
                                        </td>
                                        <td style=" 100px; height: 13px">
                                            <div style=" 266px; height: 1px">
                                            </div>
                                        </td>
                                    </tr>
                                </table>
                            </PagerTemplate>       
                        </asp:GridView>

    红色的部分就是自定义的分页代码,其实LinkButton里的CommandArgument参数就是gridview的当前页,CommandName表示触发的命令,这些都不能改。
    注意里面有个RecordCount的变量,他是public类型,是从后台传过来的,表示记录的条数,测试的时候别忘了这个变量啊。

    二、分页的代码
     protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        
    {
            
    SetGridPage(sender, e,DtSource)
         }

    SetGridPage的函数
    /// <summary>
        
    /// 分页处理
        
    /// </summary>
        
    /// <param name="sender"></param>
        
    /// <param name="e"></param>
        
    /// <param name="dt"></param>

        public void SetGridPage(object sender, GridViewPageEventArgs e,DataTable dt)
        
    {
            GridView theGrid 
    = (GridView)sender; // refer to the GridView
            int newPageIndex = 0;        
            GridViewRow pagerRow 
    = theGrid.BottomPagerRow;
            
    //GridViewRow pagerRow = theGrid.Controls[0].Controls[theGrid.Controls[0].Controls.Count - 1] as GridViewRow; // refer to PagerTemplate
            
    //GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow
            if (-2 == e.NewPageIndex)//点击按钮的事件
            
                TextBox txtNewPageIndex 
    = null;                        
                
    if (null != pagerRow)
                
    {
                    txtNewPageIndex 
    = (TextBox)pagerRow.FindControl("TextGotoPage");   // refer to the TextBox with the NewPageIndex value
                }

                
    if (null != txtNewPageIndex && txtNewPageIndex .Text !="")
                
    {
                    newPageIndex 
    = int.Parse(txtNewPageIndex.Text) - 1// get the NewPageIndex                
                }

                
    else
                
    {
                    newPageIndex 
    = 0;
                }

            }

            
    else
            

                
    //当点击分页连接的时候
                newPageIndex = e.NewPageIndex;
            }

            
    // 处理超出范围的分页
            newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;
            newPageIndex 
    = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;
            
            ((TextBox)pagerRow.FindControl(
    "TextGotoPage")).Text = Convert.ToString(newPageIndex + 1);
            
    //帮定数据源
            theGrid.PageIndex = newPageIndex;
            theGrid.DataSource 
    = dt;        
              theGrid.DataBind();        
        }
  • 相关阅读:
    C#.NET实现DES对称加密
    C#.NET 比较好用的tcp通信模板(服务器端篇)
    追MM的二十三种方法
    C# .NET锁屏程序(顺带屏蔽任务管理器)
    近段时间个人总结
    C#.NET 比较好用的tcp通信模板(客户端篇)
    使用BufferedReader读取文本内容
    map集合增强for循环遍历后输出文本
    流程控制
    centos7安装golang
  • 原文地址:https://www.cnblogs.com/ringwang/p/992062.html
Copyright © 2020-2023  润新知