Gridview分页的前后台代码,当初刚学.net的时候,总觉得gridview自带的分页效果不能满足我的要求,在网上搜搜了大半天,最后整理如下:
前台代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="800px" AllowPaging="True" OnRowDataBound="GridView1_RowDataBound" PageSize="10" OnRowCommand="GridView1_RowCommand" CellPadding="4" ForeColor="#333333" GridLines="None"> <PagerSettings Visible="False" /> <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> <RowStyle BackColor="#EFF3FB" /> <Columns> <asp:TemplateField HeaderText="序号"> <ItemTemplate> <%# (Container.DataItemIndex+1).ToString()%> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Test_paperID" HeaderText="试卷id" Visible="false" /> </Columns> <PagerStyle BackColor="#666666" ForeColor="White" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" /> <HeaderStyle BackColor="#3b94de" Font-Bold="True" ForeColor="White" /> <EditRowStyle BackColor="#7C6F57" /> <AlternatingRowStyle BackColor="White" /> <HeaderStyle Font-Bold="True" Font-Size="Large" /> </asp:GridView> <asp:Panel ID="Panel2" runat="server" Width="100%"> <asp:LinkButton ID="btnFirst1" CommandArgument="first" OnClick="PagerButtonClick1" runat="server">首 页</asp:LinkButton> <asp:LinkButton ID="btnPrev1" CommandArgument="prev" OnClick="PagerButtonClick1" runat="server">上一页</asp:LinkButton> <asp:LinkButton ID="btnNext1" CommandArgument="next" OnClick="PagerButtonClick1" runat="server">下一页</asp:LinkButton> <asp:LinkButton ID="btnLast1" CommandArgument="last" OnClick="PagerButtonClick1" runat="server">尾 页</asp:LinkButton> <asp:Label ID="LblCurrentIndex1" runat="server"></asp:Label> <asp:Label ID="LblPageCount1" runat="server"></asp:Label> <asp:Label ID="LblRecordCount1" runat="server"></asp:Label> 跳转到: <asp:DropDownList ID="pageDropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="pageDropDownList1_SelectedIndexChanged"> </asp:DropDownList> </asp:Panel>
绑定函数里的后台代码:
Panel2.Visible = true; GridView1.DataSource = lookselect; GridView1.DataKeyNames = new String[] { "Test_paperID" }; GridView1.DataBind(); btnFirst1.Enabled = true; btnPrev1.Enabled = true; btnNext1.Enabled = true; btnLast1.Enabled = true; LblCurrentIndex1.Text = "第 " + (GridView1.PageIndex + 1).ToString() + " 页"; LblPageCount1.Text = "共 " + GridView1.PageCount.ToString() + " 页"; LblRecordCount1.Text = "总共 " + lookselect.Tables[0].Rows.Count.ToString() + " 条"; if (GridView1.PageIndex == 0) { btnFirst1.Enabled = false; btnPrev1.Enabled = false; } else if (GridView1.PageIndex == GridView1.PageCount - 1) { btnNext1.Enabled = false; btnLast1.Enabled = false; } pageDropDownList1.Items.Clear(); for (int i = 1; i < GridView1.PageCount + 1; i++) { pageDropDownList1.Items.Add(i.ToString()); } pageDropDownList1.SelectedValue = Convert.ToString(GridView1.PageIndex + 1); // 计算生成分页页码,分别为:"首 页" "上一页" "下一页" "尾 页" btnFirst1.CommandName = "1"; btnPrev1.CommandName = (GridView1.PageIndex == 0 ? "1" : GridView1.PageIndex.ToString()); btnNext1.CommandName = (GridView1.PageCount == 1 ? GridView1.PageCount.ToString() : (GridView1.PageIndex + 2).ToString()); btnLast1.CommandName = GridView1.PageCount.ToString();
其余的函数类:
protected void PagerButtonClick1(object sender, EventArgs e) { GridView1.PageIndex = Convert.ToInt32(((LinkButton)sender).CommandName) - 1; Bind(); } protected void pageDropDownList1_SelectedIndexChanged(object sender, EventArgs e) { GridView1.PageIndex = Convert.ToInt32(pageDropDownList1.SelectedValue) - 1; Bind(); }
到这里,gridview分页的代码都在上面了。