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;width: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="width: 99%; height: 15px">
                                <tr>
                                    <td style="width: 100px; height: 13px">
                                        </td>
                                    <td style="width: 100px; height: 13px">
                                        <div style="width: 286px; height: 7px; font-size:12px;">                                          
                                                        总共                                                 
                                                    <%=RecordCount%>                                                   
                                                        条记录 当前第                                                  
                                                        <%#((GridView)Container.NamingContainer).PageIndex+1%>/<%#((GridView)Container.NamingContainer).PageCount %>
                                                        页
                                             
                                        </div>
                                    </td>
                                    <td style="width: 100px; height: 13px">
                                        <div style="width: 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="width: 100px; height: 13px">
                                        <div style="width: 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();        
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值