gridview实现分页

前台代码:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
            AutoGenerateColumns="False" DataKeyNames="ScoreID"
            DataSourceID="SqlDataSource1" onpageindexchanging="GridView1_PageIndexChanging" 
            Width="100%" EmptyDataText="没有数据记录!"
            BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"
            CellPadding="3" GridLines="Horizontal">
            <AlternatingRowStyle BackColor="#F7F7F7" />
            <Columns>
                <asp:BoundField DataField="ScoreID" HeaderText="成绩编号" ReadOnly="True"
                    SortExpression="ScoreID" />
                <asp:BoundField DataField="CourseID" HeaderText="课程编号"
                    SortExpression="CourseID" />
                <asp:BoundField DataField="StuScore" HeaderText="学生成绩"
                    SortExpression="StuScore" />
                <asp:BoundField DataField="StuID" HeaderText="学生编号" SortExpression="StuID" />
            </Columns>
            <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
            <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
            <PagerTemplate>
                当前第:
               <%-- //((GridView)Container.NamingContainer)就是为了得到当前的控件--%>
                <asp:Label ID="LabelCurrentPage" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageIndex + 1 %>"></asp:Label>
                页/共:
               <%-- //得到分页页面的总数--%>
                <asp:Label ID="LabelPageCount" runat="server" Text="<%# ((GridView)Container.NamingContainer).PageCount %>"></asp:Label>
                页
                 <%--//如果该分页是首分页,那么该连接就不会显示了.同时对应了自带识别的命令参数CommandArgument--%>
                <asp:LinkButton ID="LinkButtonFirstPage" runat="server" CommandArgument="First" CommandName="Page"
                    Visible='<%#((GridView)Container.NamingContainer).PageIndex != 0 %>'>首页</asp:LinkButton>
                <asp:LinkButton ID="LinkButtonPreviousPage" runat="server" CommandArgument="Prev"
                    CommandName="Page" Visible='<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>'>上一页</asp:LinkButton>
               <%--//如果该分页是尾页,那么该连接就不会显示了--%>
                <asp:LinkButton ID="LinkButtonNextPage" runat="server" CommandArgument="Next" CommandName="Page"
                    Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>下一页</asp:LinkButton>
                <asp:LinkButton ID="LinkButtonLastPage" runat="server" CommandArgument="Last" CommandName="Page"
                    Visible='<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>'>尾页</asp:LinkButton>
                转到第
                <asp:TextBox ID="txtNewPageIndex" runat="server" Width="20px" Text='<%# ((GridView)Container.Parent.Parent).PageIndex + 1 %>' />页
                <%--//这里将CommandArgument即使点击该按钮e.newIndex 值为3 --%>
                <asp:LinkButton ID="btnGo" runat="server" CausesValidation="False" CommandArgument="-2"
                    CommandName="Page" Text="GO" />
            </PagerTemplate>
            <RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
            <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
            <SortedAscendingCellStyle BackColor="#F4F4FD" />
            <SortedAscendingHeaderStyle BackColor="#5A4C9D" />
            <SortedDescendingCellStyle BackColor="#D8D8F0" />
            <SortedDescendingHeaderStyle BackColor="#3E3277" />
        </asp:GridView>

 

后台代码:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)        

{            

GridView theGrid = sender as GridView;            

int newPageIndex = 0;            

if (e.NewPageIndex == -3)            

{                

//点击了Go按钮                

TextBox txtNewPageIndex = null;                

//GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow                

GridViewRow pagerRow = theGrid.BottomPagerRow;                

if (pagerRow != null)                

{                    

//得到text控件                    

txtNewPageIndex = pagerRow.FindControl("txtNewPageIndex") as TextBox;                

}                

if (txtNewPageIndex != null)                

{                    

//得到索引                    

newPageIndex = int.Parse(txtNewPageIndex.Text) - 1;                

}            

}            

else            

{                

//点击了其他的按钮                

newPageIndex = e.NewPageIndex;            

}            

//防止新索引溢出            

newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;            

newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;            

//得到新的值            

theGrid.PageIndex = newPageIndex;            

//重新绑定            

GridView1.DataBind();

        }

posted @ 2016-11-04 09:55  JCH344  阅读(149)  评论(0编辑  收藏  举报