GRIDVIEW两种分页代码

第一种分页A.aspx文件<%@ Page Language="C#" CodeFile="真分页.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" ><head runat="server"><title>自定义代码实现真分页</title></head><body><form id="form1" runat="server"><div><asp:GridView ID="GridView1" runat="server"></asp:GridView><br />共有记录<asp:Label ID="lblrecordamount" runat="server" BackColor="White" ForeColor="Red"></asp:Label>条&nbsp; 每页显示<asp:LabelID="lblpagesize" runat="server" BackColor="White" ForeColor="Red"></asp:Label>条<br />共有<asp:Label ID="lblpagecount" runat="server" BackColor="White"ForeColor="Red"></asp:Label>页&nbsp; 当前是第<asp:LabelID="lblcurpageindex" runat="server" BackColor="White" ForeColor="Red"></asp:Label>页<br /><br /><asp:LinkButton ID="lbFirst" runat="server" CommandName="first" OnCommand="lbLast_Command">首页</asp:LinkButton>&nbsp;<asp:LinkButton ID="lbPrev" runat="server" CommandName="prev" OnCommand="lbLast_Command">上一页</asp:LinkButton>&nbsp;<asp:LinkButton ID="lbNext" runat="server" CommandName="next" OnCommand="lbLast_Command">下一页</asp:LinkButton>&nbsp;<asp:LinkButton ID="lbLast" runat="server" CommandName="last" OnCommand="lbLast_Command">尾页</asp:LinkButton>&nbsp; 直接跳转到<asp:DropDownListID="ddl" runat="server" OnSelectedIndexChanged="ddl_SelectedIndexChanged"></asp:DropDownList>页</div></form></body></html>A.aspx.cs文件using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page{private int recordamount = 0; //表中的记录总数private int pagesieze = 5; //每页显示多少条记录private int pagecount = 0; //共需要分多少页private int curpageindex = 0; //当前是第几页protected void Page_Load(object sender, EventArgs e){//第一次请求该页时初始化recordamount、pagesieze、pagecount这3个值,这3个值在以后的显示中都不会改变if (!this.IsPostBack){SqlDataSource ds = new SqlDataSource();ds.ConnectionString= ConfigurationManager.ConnectionStrings["gvdb"].ConnectionString;ds.SelectCommand = "select count(*) from stuinfo";DataView dv = (DataView)ds.Select(DataSourceSelectArguments.Empty);int count = int.Parse(dv[0][0].ToString());//初始化表中的记录总数recordamount = count;//初始化总页数if (recordamount % pagesieze == 0){pagecount = recordamount / pagesieze;}else{pagecount = recordamount / pagesieze + 1;}//第一次浏览该页面时显示第一页,所以当前页就是第一页curpageindex = 1;//用Label记下这4个变量的值,这样这4个变量的值就可以在服务器和浏览器端来回传递而不需要每次显示时都计算一遍this.lblrecordamount.Text = recordamount.ToString();this.lblpagesize.Text = pagesieze.ToString();this.lblpagecount.Text = pagecount.ToString();this.lblcurpageindex.Text = curpageindex.ToString();//初始化DropDownList1for (int i = 1; i <= pagecount; i++){this.ddl.Items.Add(i.ToString());}//由于4个参数的值已经确定,那么要显示的记录是从几到几就都确定了,这时候直接显示就可以了ShowInfo();}//与应用程序不同的地方是此处一定要把当前页面的索引值和分页总数的值存储起来,因为//网页跳转过程中跳转入口的不确定性,后面随时要用到,所以必须单独存储。

//curpageindex、pagecount这2个值在“首页、上一页、下一页、尾页”这4个按钮的事件中需要使用,所以应该在每次加载时都为这2个参数赋值curpageindex = int.Parse(this.lblcurpageindex.Text);pagecount = int.Parse(this.lblpagecount.Text);}//根据4个变量来显示数据的方法public void ShowInfo(){SqlDataSource ds = new SqlDataSource();ds.ConnectionString = ConfigurationManager.ConnectionStrings["gvdb"].ConnectionString;ds.SelectCommand = "proc_stuinfopage";ds.SelectCommandType = SqlDataSourceCommandType.StoredProcedure;//为存储过程的2个参数赋值int start = pagesieze * (curpageindex - 1) + 1;int end = pagesieze * curpageindex;ds.SelectParameters.Add("startindex", start.ToString());ds.SelectParameters.Add("endindex", end.ToString());DataView dv = (DataView)ds.Select(DataSourceSelectArguments.Empty);this.GridView1.DataSource = dv;this.GridView1.AutoGenerateColumns = true;this.GridView1.DataBind();//改变当前是第几页这个Label的标签this.lblcurpageindex.Text = curpageindex.ToString();//实现ddl同步this.ddl.SelectedValue = curpageindex.ToString();//设置按钮的可用性if (curpageindex == 1){this.lbFirst.Enabled = false;this.lbPrev.Enabled = false;}else{this.lbPrev.Enabled = true;this.lbFirst.Enabled = true;}if (curpageindex == pagecount){this.lbLast.Enabled = false;this.lbNext.Enabled = false;}else{this.lbNext.Enabled = true;this.lbLast.Enabled = true;}}//“首页、上一页、下一页、尾页”这4个按钮的事件处理程序,共用一个事件处理程序protected void lbLast_Command(object sender, CommandEventArgs e){if (mandName == "first") //首页就是将当前页设为1{curpageindex = 1;}else if (mandName == "next") //下一页就是当前页+1{curpageindex++;}else if (mandName == "prev") //上一页就是当前页-1{curpageindex--;}else if (mandName == "last") //尾页就是当前页=总页数,也就是最后一页{curpageindex = pagecount;}//显示数据ShowInfo();}protected void ddl_SelectedIndexChanged(object sender, EventArgs e){string a = this.ddl.SelectedValue;curpageindex = int.Parse(a);ShowInfo();}}代码简析:看效果图就可以看出这种分页是在GridView外部分页,且其绑定对象是SqlDataSource因此它的分页代码是在GridView外写代码,相对叫简单,但确定是效果图看上去不是那么美观。

合集下载

gridview实现分页

gridview实现分页

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class GridView_Page : System.Web.UI.Page
GridView1.PagerSettings.NextPageImageUrl = "img/next.gif";
GridView1.PagerSettings.PreviousPageImageUrl = "img/pre.gif";
GridView1.PagerSettings.FirstPageImageUrl = "img/first.gif";
如果是用代码实现,则需要这么做:
1、允许分页:设置AllowPaging=True;
2、设置GridView属性栏中PagerSetting里的一些属性中,定义分页的样式;
3、数据部署:将数据显示到GridView上;
4、加入相关事件:PageIndexChanged()、PageIndexChanging();

GridView分页的实现以及自定义分页样式功能实例

GridView分页的实现以及自定义分页样式功能实例

GridView分页的实现以及⾃定义分页样式功能实例GridView分页的实现复制代码代码如下:要在GridView中加⼊//实现分页AllowPaging="true"//⼀页数据10⾏PageSize="10"// 分页时触发的事件OnPageIndexChanging="gvwDesignationName_PageIndexChanging"在服务器事件⾥复制代码代码如下:protectedvoid gvwDesignationName_PageIndexChanging(object sender, GridViewPageEventArgs e){gvwDesignationName.PageIndex=e.newIndex;bingDesignatioonName();}这⾥我给出⼀个通⽤显⽰分页的模板(⽹上搜的,⾃⼰给出注释)复制代码代码如下:<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>对应该事件中代码为复制代码代码如下:protected void gvwDesignationName_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和FooterRowGridViewRow 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;//重新绑定bingDesignatioonName();}。

C#DataGridView分页显示代码详解

C#DataGridView分页显示代码详解
this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table")‘;//绑定 DataGridView
} }
上边红色部分获取总行数是调用的数据操作层里的 getds 方法返回一个数据集, 类和方法如下:
class DBExecute { string G_str_connectionString = @"Data
/// 第一页 private void toolStripButton2_Click(object sender, EventArgs e) {
if (pageall > 1) {
start = 0; page = 1; tslPage.Text = page.ToString(); this.dataGridView1.DataSource = gettb(selectsql ,start,count,"table")‘;//绑定 DataGridView } }
C#DataGridView 分页显示代码详解
DBClass.DBExecute dbexecute = new DBExecute();
string connectionString = @"Data Source=ServerName;Database=DatabaseName;integrated security=true";
// 上一页 private void toolStripButton3_Click(object sender, EventArgs e) {
if (page >1) {
page--; start -= 20; tslPage.Text = page.ToString();

GridView高效分页和搜索功能的实现代码

GridView高效分页和搜索功能的实现代码

GridView⾼效分页和搜索功能的实现代码前⾔:公司项⽬开发,上周的任务是做基础数据的管理。

在Sharepoint2010⾥边内嵌的aspx页,遇到了各种各样奇葩的问题,因为之前对sharepoint只是有⼀些了解,但是没有设计到具体的编程⼯作,这⼀次算是初次接触吧。

其中有⼀部分基础数据数据量很⼤,⼤致有⼗多万,因为是对基础数据的维护,所以还需要对数据进⾏列表展⽰,增删改查什么的,⼤家都知道⾥边的GridView有⾃带的分页,但是,那个分页对于少量的数据还好,对于这种数⼗万的数据量⽽⾔,这种分页⽅式简直就是灾难。

⽹上关于GridView⾼效分页的东西有很多,找了⼀个⾃⼰改了改。

⽤着效果还不错,和⼤家分享⼀下。

这是分页的效果图下边就讲⼀下具体的实现,⾸先声明,这个东西是不是我原创的,只是在此基础上进⾏了修饰和完善。

希望能给各位有所启发。

⼀、前台布局复制代码代码如下:<div><div id="main"><div id="search"><table><tr><td><asp:Label ID="lb" runat="server" Text="姓名"></asp:Label></td><td><asp:TextBox ID="SearchName" runat="server"></asp:TextBox></td><td><asp:Button ID="btnSearch" runat="server" Text="查询" onclick="PagerBtnCommand_OnClick" CommandName="search" /></td><td><asp:Button ID="btnReset" runat="server" Text="重置" onclick="btnReset_Click" /></td></tr></table></div><div id="gridView"><asp:GridView ID="UserGridView" runat="server" AutoGenerateColumns="false"><Columns><asp:TemplateField HeaderText="⽤户名"><ItemTemplate><asp:Label ID="UserName" runat="server" Text='<%#Eval("username") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="单位名称"><ItemTemplate><asp:Label ID="DisplayName" runat="server" Text='<%#Eval("displayname") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="组织编码"><ItemTemplate><asp:Label ID="OrgCode" runat="server" Text='<%#Eval("orgcode") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="组织名称"><ItemTemplate><asp:Label ID="OrgName" runat="server" Text='<%#Eval("orgname") %>'></asp:Label></ItemTemplate></asp:TemplateField></Columns></asp:GridView></div><div id="page"><table><tr><td><asp:Label ID="lbcurrentpage1" runat="server" Text="当前页:"></asp:Label><asp:Label ID="lbCurrentPage" runat="server" Text=""></asp:Label><asp:Label ID="lbFenGe" runat="server" Text="/"></asp:Label><asp:Label ID="lbPageCount" runat="server" Text=""></asp:Label></td><td><asp:Label ID="recordscount" runat="server" Text="总条数:"></asp:Label><asp:Label ID="lbRecordCount" runat="server" Text=""></asp:Label></td><td><asp:Button ID="Fistpage" runat="server" CommandName="" Text="⾸页" OnClick="PagerBtnCommand_OnClick" /><asp:Button ID="Prevpage" runat="server" CommandName="prev" Text="上⼀页"OnClick="PagerBtnCommand_OnClick" /><asp:Button ID="Nextpage" runat="server" CommandName="next" Text="下⼀页" OnClick="PagerBtnCommand_OnClick" /><asp:Button ID="Lastpage" runat="server" CommandName="last" Text="尾页"key="last" OnClick="PagerBtnCommand_OnClick" /></td><td><asp:Label ID="lbjumppage" runat="server" Text="跳转到第"></asp:Label><asp:TextBox ID="GotoPage" runat="server" Width="25px"></asp:TextBox><asp:Label ID="lbye" runat="server" Text="页"></asp:Label><asp:Button ID="Jump" runat="server" Text="跳转" CommandName="jump" OnClick="PagerBtnCommand_OnClick" /> </td></tr></table></div></div></div>布局的效果如下:⼆、后台的代码实现我会⼀点⼀点向⼤家讲解清楚,这个分页的原理Members:这⾥主要定义⼏个全局的变量,主要⽤来记录信息的数量、页的数量和当前页复制代码代码如下:#region Membersconst int PAGESIZE = 10;//每页显⽰信息数量int PagesCount, RecordsCount;//记录总页数和信息总条数int CurrentPage, Pages, JumpPage;//当前页,信息总页数(⽤来控制按钮失效),跳转页码const string COUNT_SQL = "select count(*) from p_user";#endregionMethods: 1、GetRecordsCount:该⽅法主要⽤来获取当前信息的总数,有⼀个sqlSearch参数,默认的为default,即初始化页⾯时,查询所有信息的总条数,当⽤户输⼊要搜索的⽤户名进⾏检索时,获取符合⽤户检索条件的信息的总条数复制代码代码如下:/// <summary>/// 获取信息总数/// </summary>/// <param name="sqlSearch"></param>/// <returns></returns>public static int GetRecordsCount(string sqlRecordsCount){string sqlQuery;if (sqlRecordsCount == "default"){sqlQuery = COUNT_SQL;}else{sqlQuery = sqlRecordsCount;}int RecordCount = 0;SqlCommand cmd = new SqlCommand(sqlQuery, Conn());RecordCount = Convert.ToInt32(cmd.ExecuteScalar());cmd.Connection.Close();return RecordCount;}2、OverPage:该⽅法主要⽤来计算剩余页,当前设置的为每页显⽰10条数据,如何符合条件的数据有11条,则要显⽰2页复制代码代码如下:/// <summary>/// 计算余页/// </summary>/// <returns></returns>public int OverPage(){int pages = 0;if (RecordsCount % PAGESIZE != 0)pages = 1;elsepages = 0;return pages;}3、ModPage:该⽅法也是⽤计算余页,主要⽤来防⽌SQL执⾏溢出复制代码代码如下:/// <summary>/// 计算余页,防⽌SQL语句执⾏时溢出查询范围/// </summary>/// <returns></returns>public int ModPage(){int pages = 0;if (RecordsCount % PAGESIZE == 0 && RecordsCount != 0)pages = 1;elsepages = 0;return pages;}4、Conn:该⽅法⽤来创建数据连接对象,在使⽤的时候只需改成⾃⼰的数据库名即可 复制代码代码如下:/// <summary>/// 数据连接对象/// </summary>/// <returns></returns>public static SqlConnection Conn(){SqlConnection conn = new SqlConnection("data source=.;initial catalog=DB_GSL_ZCW;Integrated Security=true"); conn.Open();return conn;}5、GridViewDataBind:该⽅法主要⽤来数据绑定,如果传⼊的参数为default则,默认的绑定所有的数据,否则,则绑定过滤过的数据复制代码代码如下:/// <summary>/// GridView数据绑定,根据传⼊参数的不同,进⾏不同⽅式的查询,/// </summary>/// <param name="sqlSearch"></param>private void GridViewDataBind(string sqlSearch){CurrentPage = (int)ViewState["PageIndex"];//从ViewState中读取页码值保存到CurrentPage变量中进⾏按钮失效运算Pages = (int)ViewState["PagesCount"];//从ViewState中读取总页参数进⾏按钮失效运算//判断四个按钮(⾸页、上⼀页、下⼀页、尾页)状态if (CurrentPage + 1 > 1)//当前页是否为⾸页{Fistpage.Enabled = true;Prevpage.Enabled = true;}else{Fistpage.Enabled = false;Prevpage.Enabled = false;}if (CurrentPage == Pages)//当前页是否为尾页{Nextpage.Enabled = false;Lastpage.Enabled = false;}else{Nextpage.Enabled = true;Lastpage.Enabled = true;}DataSet ds = new DataSet();string sqlResult;//根据传⼊参数sqlSearch进⾏判断,如果为default则为默认的分页查询,否则为添加了过滤条件的分页查询if (sqlSearch == "default"){sqlResult = "Select Top " + PAGESIZE + "user_serialid,username,displayname,orgcode,orgname from p_user where user_serialid not in(select top " + PAGESIZE * CurrentPage + " user_serialid from p_user order by user_serialid asc) order by user_serialid asc";}else{sqlResult = sqlSearch;}SqlDataAdapter sqlAdapter = new SqlDataAdapter(sqlResult, Conn());sqlAdapter.Fill(ds, "Result");UserGridView.DataSource = ds.Tables["Result"].DefaultView;UserGridView.DataBind();//显⽰Label控件lbCurrentPaget和⽂本框控件GotoPage状态lbCurrentPage.Text = (CurrentPage + 1).ToString();GotoPage.Text = (CurrentPage + 1).ToString();sqlAdapter.Dispose();}6、Page_Load:页⾯加载函数,主要是在⾸次进⼊页⾯时,进⾏初始化,默认的获取所有的信息复制代码代码如下:protected void Page_Load(object sender, EventArgs e){if (!IsPostBack)//⾸次进⾏该页时,页⾯初始化{RecordsCount = GetRecordsCount("default");//默认信息总数PagesCount = RecordsCount / PAGESIZE + OverPage();//默认的页总数ViewState["PagesCount"] = RecordsCount / PAGESIZE - ModPage();//保存末页索引,⽐页总数⼩1ViewState["PageIndex"] = 0;//保存页⾯初始索引从0开始ViewState["JumpPages"] = PagesCount;//保存页总数,跳页时判断⽤户输⼊数是否超出页码范围//显⽰lbPageCount、lbRecordCount的状态lbPageCount.Text = PagesCount.ToString();lbRecordCount.Text = RecordsCount.ToString();//判断跳页⽂本框失效if (RecordsCount <= 10){GotoPage.Enabled = false;}GridViewDataBind("default");//调⽤数据绑定函数TDataBind()进⾏数据绑定运算}}7、PagerBtnCommand_OnClick:该⽅法主要⽤来处理设计视图页的“⾸页”、“下⼀页”,“上⼀页”,“尾页”,“查询”按钮的Click 事件,主要通过不同按钮的CommandName属性来分别处理,需要在前台为每⼀个按钮相应的CommandName属性赋值,如果⽤户点击的是“查询”按钮,这个时候需要对查询的Sql语句进⾏重写,加⼊过滤条件,即⽤户输⼊的查询的条件复制代码代码如下:/// <summary>/// 页⾯按钮Click处理/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void PagerBtnCommand_OnClick(object sender, EventArgs e){CurrentPage = (int)ViewState["PageIndex"];//从ViewState中读取页码值保存到CurrentPage变量中进⾏参数运算Pages = (int)ViewState["PagesCount"];//从ViewState中读取总页参数运算Button btn = sender as Button;string sqlResult="default";if (btn != null){string cmd = mandName;switch (cmd)//根据不同的CommandName做出不同的处理{case "next":CurrentPage++;break;case "prev":CurrentPage--;break;case "last":CurrentPage = Pages;break;case "search":if (!string.IsNullOrEmpty(SearchName.Text)){RecordsCount = GetRecordsCount("select count(*) from p_user where username like '" + SearchName.Text + "%'");//获取过滤后的总记录数PagesCount = RecordsCount / PAGESIZE + OverPage();//该变量为页总数ViewState["PagesCount"] = RecordsCount / PAGESIZE - ModPage();//该变量为末页索引,⽐页总数⼩1ViewState["PageIndex"] = 0;//保存⼀个为0的页⾯索引值到ViewState,页⾯索引从0开始ViewState["JumpPages"] = PagesCount;//保存PageCount到ViewState,跳页时判断⽤户输⼊数是否超出页码范围//显⽰lbPageCount、lbRecordCount的状态lbPageCount.Text = PagesCount.ToString();lbRecordCount.Text = RecordsCount.ToString();//判断跳页⽂本框失效if (RecordsCount <= 10)GotoPage.Enabled = false;sqlResult = "Select Top " + PAGESIZE + "user_serialid,username,displayname,orgcode,orgname from p_user where user_serialid not in(select top " + PAGESIZE * CurrentPage + " user_serialid from p_user order by user_serialid asc) and username like '" + SearchName.Text + "%' order by user_serialid asc";}else{Response.Write("请输⼊您所要查找的⽤户姓名!");}break;case "jump":JumpPage = (int)ViewState["JumpPages"];//从ViewState中读取可⽤页数值保存到JumpPage变量中//判断⽤户输⼊值是否超过可⽤页数范围值if(Int32.Parse(GotoPage.Text) > JumpPage || Int32.Parse(GotoPage.Text) <= 0)Response.Write("<script>alert('页码范围越界!')</script>");else{int InputPage = Int32.Parse(GotoPage.Text.ToString()) - 1;//转换⽤户输⼊值保存在int型InputPage变量中ViewState["PageIndex"] = InputPage;CurrentPage = InputPage;//写⼊InputPage值到ViewState["PageIndex"]中sqlResult = "Select Top " + PAGESIZE + "user_serialid,username,displayname,orgcode,orgname fromp_user where user_serialid not in(select top " + PAGESIZE * CurrentPage + " user_serialid from p_user order byuser_serialid asc) and username like '" + SearchName.Text + "%' order by user_serialid asc";}break;default:CurrentPage = 0;break;}ViewState["PageIndex"] = CurrentPage;//将运算后的CurrentPage变量再次保存⾄ViewStateGridViewDataBind(sqlResult);//调⽤数据绑定函数TDataBind()}}8、btn_Reset_Click:该⽅法主要⽤来进⾏重置,⽤户完成⼀次查询之后,需要重置,才能进⾏下⼀次的查询操作复制代码代码如下:protected void btnReset_Click(object sender, EventArgs e)(RecordsCount = GetRecordsCount("default");//默认信息总数PagesCount = RecordsCount / PAGESIZE + OverPage();//默认的页总数ViewState["PagesCount"] = RecordsCount / PAGESIZE - ModPage();//保存末页索引,⽐页总数⼩1ViewState["PageIndex"] = 0;//保存页⾯初始索引从0开始ViewState["JumpPages"] = PagesCount;//保存页总数,跳页时判断⽤户输⼊数是否超出页码范围//显⽰lbPageCount、lbRecordCount的状态lbPageCount.Text = PagesCount.ToString();lbRecordCount.Text = RecordsCount.ToString();//判断跳页⽂本框失效if (RecordsCount <= 10){GotoPage.Enabled = false;}GridViewDataBind("default");//调⽤数据绑定函数TDataBind()进⾏数据绑定运算}这⾥的⾼效分页⽅法主要⽤的是select top 10 Id ,Name from tb where Id not in (select top 10*N from tb order by Id asc) order by Id asc⽰例中的N代表的是页数,之前原⼦⾥也有很多关于⾼效分页的讨论,这⾥就不再多说了,我个⼈觉得这个分页语句效果还不错,当然除此之外还有row_number()函数分页、select Max() 分页等等⽅法,之前也有总结过,有兴趣的朋友可以看⼀下我之前写的ListView和Repeater⾼效分页这篇⽂章,⾥边讲述的也很详细,只要你⼀步⼀步的照着去操练应该问题不⼤的。

GridView分页系列

GridView分页系列

GridView分页系列1:GridView自带分页:GridView自带的分页,是假分页,他每次从数据库把数据全部查询出之后,通过分页的算法,进行按每页数量进行分页。

分页的属性元素:分页功能的实现就是通过对这些属性元素的操作实现的。

//this.GvShow.PageIndex 当前页的索引//this.GvShow.PageCount 总共的页数//this.GvShow.Rows.Count 当前页签内的gridview的行数//this.GvShow.PageSize 每页的记录数//this.GvShow.PageIndex*this.GvShow.rows.count + 1 行索引设置普通的GridView分页:属性AllowPaging="True"、PageSize="2"设置分页事件onpageindexchanging="GvShow_PageIndexChanging"后台方法绑定:protected void GvShow_PageIndexChanging(object sender, GridViewPageEventArgs e){this.GvShow.PageIndex = e.NewPageIndex;BindView();}2:自定义样式的GridView自带分页:普通的GridView自带的分页,不带样式,只是普通的1,2,3等,如果希望获取到具有其他分页样式就应该设置<PagerSettings Position="TopAndBottom"PageButtonCount="1"/>属性<%--FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PreviousPageText="上一页"--%>后台访问此属性的实例:this.GvShow.PagerSettings.FirstPageText = "首页";stPageText = "尾页";this.GvShow.PagerSettings.NextPageText = "下一页";this.GvShow.PagerSettings.PreviousPageText = "上一页";this.GvShow.PagerSettings.Mode = PagerButtons.NextPreviousFirstLast;通过<PagerStyle HorizontalAlign="Center" VerticalAlign="Middle" />属性可以设置GRIDVIEW分页的样式3:在<PagerTemplate></PagerTemplate>分页模板中自定义分页的样式,虽然微软开辟了这个模板提供给用户类似于自定义分页的功能,但这个功能完全还是基于微软的GridView自带的分页进行的,<PagerSettings>属性的Visable的属性必须是true AllowPaging="true" 与PageSize="3"属性页都要进行相关的有效设置才可以。

GridView控件自定义分页详解

GridView控件自定义分页详解

GridView控件自定义分页详解在这里我们将用一个隐藏字段来保存这个PageIndex,即当前页码.当点击上一页时,将它的值减一,知道为0,要注意的一点这里的第一页页码是0而不是1.下面看看代码,然后我们再分析分析!1<asp:GridView ID="NewsGrid" runat="server" AutoGenerateColumns="False" AllowPaging="false" Width="100%">2 <Columns>3 <asp:BoundField DataField="NewsId" HeaderText="新闻ID"/>4 <asp:HyperLinkField DataNavigateUrlFields="NewsId" DataNavigateUrlFormatString="~/Details.aspx?ID={0}"5 DataTextField="Title" HeaderText="新闻标题" ItemStyle-Width="70%"/>6 <asp:BoundField DataField="PostTime" HeaderText="发布时间"/>7 <asp:CommandField HeaderText="新闻管理" ShowCancelButton="False" ShowDeleteButton="True"8 ShowEditButton="True"/>9 </Columns>10 </asp:GridView>11 <div style=" height:16px; padding-top:5px; margin-right:30px; float:right">12 <asp:HiddenField ID="CurrentPage" runat="server" Value="0"/>13 <asp:LinkButton ID="First" runat="server" CommandArgument="first" OnClick="PagerButton_Click">首页</asp:LinkButton>14 <asp:LinkButton ID="Prev" runat="server" CommandArgument="prev" OnClick="PagerButton_Click">上一页</asp:LinkButton>15 <asp:LinkButton ID="Next" runat="server" CommandArgument="next" OnClick="PagerButton_Click">下一页</asp:LinkButton>16 <asp:LinkButton ID="Last" runat="server" CommandArgument="last" OnClick="PagerButton_Click">尾页</asp:LinkButton>17 </div> CS文件中的代码:1 protected void PagerButton_Click(object sender, EventArgs e)2 {3 int pageIndx = Convert.ToInt32(CurrentPage.Value);4 int totals = NewsManager.GetNews(0, pageSize).TotalRecords;5 int pages = (totals % pageSize) == 0 ? (totals / pageSize) : (totals / pageSize + 1);6 string arg = ((LinkButton)sender).CommandArgument.ToString().ToLower();7 switch (arg)8 {9 case "prev":10 if (pageIndx > 0)11 {12 pageIndx -= 1;13 }14 break;15 case "next":16 if (pageIndx < pages - 1)17 {18 pageIndx += 1;19 }20 break;21 case "last":22 pageIndx = pages - 1;23 break;24 default:25 pageIndx = 0;26 break;27 }28 CurrentPage.Value = pageIndx.ToString();29 NewsGrid.DataSource = NewsManager.GetNews(pageIndx , pageSize).Entities;30 NewsGrid.DataBind();31 }如何在GridView中增加效果protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {//将满足特定条件的行标为高亮if (e.Row.RowType == DataControlRowType.DataRow)//判定当前的行是否属于datarow类型的行{int money = Convert.ToInt32(DataBinder.Eval(e.Row.DataItem, "MONEY"));//取当前行的列值if (money == 77)e.Row.BackColor = Color.Red;//string customer = (string)DataBinder.Eval(e.Row.DataItem, "CUSTOMER");string customer = DataBinder.Eval(e.Row.DataItem, "CUSTOMER").ToString();if (customer == "sdf")e.Row.BackColor = Color.Red;}//加入鼠标滑过的高亮效果if (e.Row.RowType == DataControlRowType.DataRow)//判定当前的行是否属于datarow类型的行{//当鼠标放上去的时候先保存当前行的背景颜色并给附一颜色e.Row.Attributes.Add("onmouseover", "currentcolor=this.style.backgroundColor;this.style.backgroundColor='yellow',this.style.fontWeight='';");//当鼠标离开的时候将背景颜色还原的以前的颜色e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=currentcolor,this.style.fontWeight='';");}//单击行改变行背景颜色if (e.Row.RowType == DataControlRowType.DataRow){e.Row.Attributes.Add("onclick","this.style.backgroundColor='#99cc00'; this.style.color='buttontext';this.style.cursor='default';");}如何在GridView中一次性批量更新多行数据2.0下含有DropDownList的GridView编辑、删除的完整例子!<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" PageSize="10"Width="542px" AllowPaging="True" AllowSorting="True"DataKeyNames="DB31_1,DB31_2"OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnPageIndexChanging="GridView1_PageIndexChanging"OnRowDataBound="GridView1_RowDataBound"OnSelectedIndexChanged="GridView1_SelectedIndexChanged" OnSorting="GridView1_Sorting" > <Columns><asp:TemplateField HeaderText="序号"><ItemTemplate><%# this.GridView1.PageIndex * this.GridView1.PageSize +this.GridView1.Rows.Count + 1%></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="学历代码" SortExpression="DB1_1"><EditItemTemplate><%--<asp:TextBox ID="TextBox1" runat="server" Text='<%#Bind("DB1_1") %>'></asp:TextBox>--%><asp:DropDownList ID ="ddlXL" runat="server" DataValueField='<%#Bind("DB1_1") %>'></asp:DropDownList></EditItemTemplate><ItemTemplate><asp:Label ID="Label1" runat="server" Text='<%#Bind("xueliText") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="学历名称" SortExpression="DB1_2"><EditItemTemplate><asp:TextBox ID="TextBox2" runat="server" Text='<%#Bind("DB1_2") %>'></asp:TextBox></EditItemTemplate><ItemTemplate><asp:Label ID="Label2" runat="server" Text='<%#Bind("DB1_2") %>'></asp:Label></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="操作" ShowHeader="False"><EditItemTemplate><asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"Text="更新"></asp:LinkButton><asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"Text="取消"></asp:LinkButton></EditItemTemplate><ItemTemplate><asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"Text="编辑" OnClientClick="return confirm('确认要编辑吗?');"></asp:LinkButton><asp:LinkButton ID="LinkButton3" runat="server" CausesValidation="False" CommandName="Delete"Text="删除" OnClientClick="return confirm('确认要删除吗?');"></asp:LinkButton><asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Select"Text="选择"></asp:LinkButton></ItemTemplate></asp:TemplateField></Columns><AlternatingRowStyle BackColor="Aquamarine" /></asp:GridView>/// <summary>/// 绑定数据到GridView/// </summary>private void GridViewBind(){检索数据库string strSql = "SELECT * FROM DB1";得到数据集this.GridView1.DataSource=conn.GetDs(strSql).Tables[0].DefaultView;this.GridView1.DataBind();}/// <summary>/// 编辑当前行/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e){GridView1.EditIndex = e.NewEditIndex;//当前编辑行背景色高亮this.GridView1.EditRowStyle.BackColor = Color.FromName("#F7CE90"); GridViewBind();}/// <summary>/// 取消编辑状态/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) {GridView1.EditIndex = -1;GridViewBind();}/// <summary>/// 删除记录过程/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e){//得到单位编号string rowToDelete = GridView1.DataKeys[e.RowIndex].Values[0].ToString();//转换为整数//int ID=Convert.ToInt32(rowToDelete);//从数据库中删除string str = "DELETE FROM DB1 where DB1_1=" + "'" + rowToDelete + "'" + "";try{conn.RunSql(str);//重新绑定数据GridViewBind();}catch (Exception ex){Response.Write("数据库错误,错误原因:" + ex.Message);Response.End();}}/// <summary>/// 更新记录过程/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e){string ID = GridView1.DataKeys[e.RowIndex].Values[0].ToString();string DB1_1 = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;//string DB1_2 = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox2")).Text;string DB1_2 =(((DropDownList))GridView1.Rows[e.RowIndex].FindControl("ddlXL")).SelectedItem.Text;//判断表单项是否有空并给出提示信息if (DB1_1 == "" || DB1_2 == ""){conn.Alert("请输入完整信息!", Page);return;}try{conn.BuilderEdit("select * from DB1 where DB1_1 ='" + ID + "'");conn.dr["DB1_1"] = DB1_1;conn.dr["DB1_2"] = DB1_2;conn.BuilderEditClose();}catch (OracleException err){if (err.Code.ToString() == "1")conn.Alert("错误:已存在具有相同主键的记录", Page);elseconn.Alert("错误:未能添加记录", Page);}Response.Write("<script language='javascript'>alert('数据已被保存!');</script>");//返回浏览状态GridView1.EditIndex = -1;GridViewBind();}/// <summary>/// 分页事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e){GridView1.PageIndex = e.NewPageIndex;GridViewBind();}/// <summary>/// 加入鼠标效果及为DropDownList绑定值/// </summary>/// <param name="sender"></param>/// <param name="e"></param>protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e){//为DropDownList绑定值if (((DropDownList)e.Row.FindControl("ddlXL")) != null){DropDownList ddlXL = (DropDownList)e.Row.FindControl("ddlXL");ddlXL.Items.Clear();ddlXL.Items.Add(new ListItem("博士", "1"));ddlXL.Items.Add(new ListItem("硕士", "2"));ddlXL.Items.Add(new ListItem("学士", "3"));}//加入鼠标滑过的高亮效果if (e.Row.RowType == DataControlRowType.DataRow)//判定当前的行是否属于datarow类型的行{//当鼠标放上去的时候先保存当前行的背景颜色并给附一颜色e.Row.Attributes.Add("onmouseover","currentcolor=this.style.backgroundColor;this.style.backgroundColor='yellow',this.style.fontWeight='';");//当鼠标离开的时候将背景颜色还原的以前的颜色e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=currentcolor,this.style.fontWeight='';");}//单击行改变行背景颜色if (e.Row.RowType == DataControlRowType.DataRow){e.Row.Attributes.Add("onclick", "this.style.backgroundColor='#99cc00';this.style.color='buttontext';this.style.cursor='default';");}}2.0下含有CheckBox的GridView删除选定记录实例<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" PageSize="5"2 Width="726px" AllowPaging="True" AllowSorting="True"3 DataKeyNames="DB1_1,DB1_2" OnRowDeleting="GridView1_RowDeleting" OnPa geIndexChanging="GridView1_PageIndexChanging" OnRowDataBound="GridView1_RowDataBound" OnSorting="GridView1_Sorting" Height="279px" >4 <Columns>5 <asp:TemplateField HeaderText="序号" >6 <ItemTemplate>7 <%# this.GridView1.PageIndex * this.GridView1.PageSize +this.GridView1.Rows.Count + 1%>8 </ItemTemplate>9 </asp:TemplateField>10 <asp:TemplateField HeaderText="选择" >11 <ItemTemplate>12 <asp:CheckBox ID="chkSelect" runat="server" ></asp:CheckBox>13 </ItemTemplate>14 </asp:TemplateField>15 <asp:TemplateField HeaderText="操作" ShowHeader="False">16 <ItemTemplate>17 <asp:LinkButton ID="lbtnDelete" runat="server" CausesValidation="False" CommandName="Delete"18 Text="删除" OnClientClick="return confirm('确认要删除吗?');"></asp:LinkButton>19 </ItemTemplate>20 </asp:TemplateField>21 </Columns>22 <AlternatingRowStyle BackColor="Aquamarine" />23 </asp:GridView>1 <asp:CheckBox ID="chkSelectAll" runat="server" Text="全部选中"OnCheckedChanged="chkSelectAll_CheckedChanged" AutoPostBack="True" ></asp:CheckBox>2 <asp:Button ID="btnDelete" runat="server" Text="删除" OnClick="btnDelete_Click" />1 protected void btnDelete_Click(object sender, EventArgs e)2 {3 string strDelete = "";4 for (int i = 0; i < this.GridView1.Rows.Count; i++)5 {6 string Label;7 bool isChecked = ((CheckBox)GridView1.Rows[i].FindControl("chkSelect")).Checked;8 Label = ((Label)GridView1.Rows[i].FindControl("labXH")).Text;9 if (isChecked)10 {11 strDelete = "DB1_1" + "=" + Label;12 }13 }14 conn.RunSql("Delete from DB1 where " + strDelete15 this.chkSelectAll.Checked = false;16 GridViewBind();17 }1819 protected void chkSelectAll_CheckedChanged(object sender, EventArgs e)20 {21 //遍历GridView行获取CheckBox属性22 for (int i = 0; i < this.GridView1.Rows.Count; i++)23 {24 ((CheckBox)GridView1.Rows[i].FindControl("chkSelect")).Checked =this.chkSelectAll.Checked;25 }26 }。

grid view分页

GridView.AllowPaging 属性注意:此属性在 .NET Framework 2.0 版中是新增的。

获取或设置一个值,该值指示是否启用分页功能。

命名空间:System.Web.UI.WebControls程序集:System.Web(在system.web.dll 中)语法C#public virtual bool AllowPaging { get; set; }属性值如果启用分页功能,则为true;否则为false。

默认为false。

备注GridView控件可自动将数据源中的所有记录分成多页,而不是同时显示这些记录。

如果数据源支持分页功能,GridView控件可利用此功能,并提供内置的分页功能。

分页功能可用于支持System.Collections.ICollection接口的任何数据源对象或支持分页功能的数据源。

若要启用分页功能,请将AllowPaging属性设置为true。

默认情况下,GridView控件在一个页面上一次显示10 条记录。

通过设置PageSize属性,可更改每页上所显示记录的数目。

若要确定显示数据源内容所需的总页数,请使用PageCount属性。

通过使用PageIndex属性,可确定当前显示的页面的索引。

启用分页时,会在GridView控件中自动显示一个称为页导航行的附加行。

页导航行包含允许用户导航至其他页面的控件。

使用PagerSettings属性可以控制页导航行的设置(如页导航显示模式、同时显示的页链接数和页导航控件的文本标签)。

通过设置Position属性,页导航行可在控件的顶部、底部或同时在顶部和底部显示。

通过设置Mode属性,您还可以从四种内置页导航显示模式中选择一种。

下表描述了内置的显示模式。

若要控制页导航行的外观(包括其背景色、字体颜色和位置),请使用PagerStyle属性。

注意使用GridView控件还可以定义页导航行的自定义模板。

有关创建自定义页导航行模板的更多信息,请参见PagerTemplate。

MicrosoftVisualStudio2005中GridView手动分页自定义分页

1.创建存储过‎程,数据库为M‎i cros‎o ft SQL Serve‎r 2000,use North‎w indgoselec‎t * from Order‎sgoif exist‎s(selec‎t * from sysob‎j ects‎where‎nam e='proc_‎o rder‎s info‎' and type='P')drop proce‎d ure proc_‎o rder‎s info‎go--创建查询表‎O rder‎s的存储过‎程,@PageI‎n dex 页面索引(页面索引=当前页数-1),@PageS‎i ze 每页显示数‎据的多少(多少行)--@PageC‎o unt 页面总数,@Recor‎d Coun‎t表中的记录‎总数creat‎e proce‎d ure proc_‎o rder‎s info‎@PageI‎n dex int,@PageS‎i ze int,@PageC‎o unt int outasdecla‎r e @Recor‎d Coun‎t int,@strsq‎l nvarc‎h ar(1000)selec‎t @Recor‎d Coun‎t=count‎(*) from order‎sset @PageC‎o unt=ceili‎n g(@Recor‎d Coun‎t*1.0/@PageS‎i ze)--第1种情况‎,表只够分成‎一页if @PageI‎n dex=0 or @PageC‎o unt<=1set @strsq‎l=N'selec‎t top'+str(@PageS‎i ze)+'* from Order‎s order‎by Order‎I D desc' --第2种情况‎,要查询表的‎最后一页(可看作表O‎r ders‎已被分成几‎个页了)else if @PageI‎n dex=@PageC‎o unt-1set @strsq‎l=N'selec‎t * from(selec‎ttop'+str(@Recor‎d Coun‎t-@PageI‎n dex*@PageS‎i ze)+'* from Order‎s order‎byOrder‎I D asc) Tem pT‎a ble order‎by Order‎I D desc'--第3种情况‎,查询非表的‎最后一页elseset @strsq‎l=N'selec‎t top'+str(@PageS‎i ze)+'* from(selec‎ttop'+str(@Recor‎d Coun‎t-@PageI‎n dex*@PageS‎i ze)+'* from Order‎s order‎byOrder‎I D asc) Tem pT‎a ble order‎by Order‎I D desc'--执行SQL‎语句exec (@strsq‎l)go2.创建显示数‎据的方法class‎CConn‎D B里的方‎法retu‎r nCon‎n()返回数据库‎连接using‎Syste‎m;using‎Syste‎m.Data;using‎Syste‎m.Confi‎g urat‎i on;using‎Syste‎m.Web;using‎Syste‎m.Web.Secur‎i ty;using‎Syste‎m.Web.UI;using‎Syste‎m.Web.UI.WebCo‎n trol‎s;using‎Syste‎m.Web.UI.WebCo‎n trol‎s.WebPa‎r ts;using‎Syste‎m.Web.UI.Htm lC‎o ntro‎l s;//导入需要使‎用的命名空‎间using‎Syste‎m.Data.SqlCl‎i ent;/// <sum m a‎r y>/// CConn‎D B 的摘要说明‎/// </sum m a‎r y>publi‎c class‎CConn‎D B{publi‎c CConn‎D B(){//// TODO: 在此处添加‎构造函数逻‎辑//}publi‎c SqlCo‎n nect‎i on retur‎n Conn‎() {SqlCo‎n nect‎i on sconn‎= newSqlCo‎n nect‎i on("serve‎r=.;datab‎a se=North‎w ind;uid=sa;pwd=sa");retur‎n sconn‎;}}class‎CDisp‎l ayOd‎e rsIn‎f o里的方‎法Disp‎l ayOr‎d ersI‎n fo()返回一个D‎a taSe‎tusing‎Syste‎m;using‎Syste‎m.Data;using‎Syste‎m.Confi‎g urat‎i on;using‎Syste‎m.Web;using‎Syste‎m.Web.Secur‎i ty;using‎Syste‎m.Web.UI;using‎Syste‎m.Web.UI.WebCo‎n trol‎s;using‎Syste‎m.Web.UI.WebCo‎n trol‎s.WebPa‎r ts;using‎Syste‎m.Web.UI.Htm lC‎o ntro‎l s;//导入需要使‎用的命名空‎间using‎Syste‎m.Data.SqlCl‎i ent;/// <sum m a‎r y>/// CDisp‎l ayOd‎e rsIn‎f o 的摘要说明‎/// </sum m a‎r y>publi‎c class‎CDisp‎l ayOd‎e rsIn‎f o{CConn‎D B ccdb = new CConn‎D B();//pageC‎o unt为‎页面总数priva‎t e int pageC‎o unt;publi‎c CDisp‎l ayOd‎e rsIn‎f o(){//// TODO: 在此处添加‎构造函数逻‎辑//}publi‎c DataS‎e t Displ‎a yOrd‎e rsIn‎f o(int pageI‎n dex,int pageS‎i ze) {SqlCo‎n nect‎i on sconn‎= ccdb.retur‎n Conn‎();SqlCo‎m m and‎scm d = new SqlCo‎m m and‎("proc_‎o rder‎s info‎",sconn‎);scm d.Param‎e ters‎.Add(new SqlPa‎r am et‎e r("@PageI‎n dex",SqlDb‎T ype.Int)); scm d.Param‎e ters‎[0].Value‎= pageI‎n dex;scm d.Param‎e ters‎.Add(new SqlPa‎r am et‎e r("@PageS‎i ze",SqlDb‎T ype.Int));scm d.Param‎e ters‎[1].Value‎= pageS‎i ze;scm d.Param‎e ters‎.Add(new SqlPa‎r am et‎e r("@PageC‎o unt",SqlDb‎T ype.Int)); scm d.Param‎e ters‎[2].Direc‎t ion = Param‎e terD‎i rect‎i on.Outpu‎t;scm m a‎n dTyp‎e = Com m a‎n dTyp‎e.Store‎d Proc‎e dure‎;SqlDa‎t aAda‎p ter sda = new SqlDa‎t aAda‎p ter(scmd);DataS‎e t ds = new DataS‎e t();sda.Fill(ds);pageC‎o unt = (int)scm d.Param‎e ters‎[2].Value‎;retur‎n ds;}publi‎c int retur‎n Page‎C ount‎() {retur‎n pageC‎o unt;}}3.页面设计和‎页面代码页面设计<%@ Page Langu‎a ge="C#" AutoE‎v entW‎i reup‎="true" CodeF‎i le="Defau‎l t.aspx.cs" Inher‎i ts="_Defa‎u lt" %><!DOCTY‎P E htm l PUBLI‎C "-//W3C//DTD XHTML‎1.0 Trans‎i tion‎a l//EN""/TR/xhtm l‎1/DTD/xhtm l‎1-trans‎i tion‎a l.dtd"><htm l xm lns‎="/1999/xhtm l‎" ><head runat‎="serve‎r"><title‎>无标题页</title‎></head><body><form id="form1‎" runat‎="serve‎r"><div>&nbsp;<asp:LinkB‎u tton‎ID="lbPre‎v" runat‎="serve‎r"OnCli‎c k="lbPre‎v_Cli‎c k">上一页</asp:LinkB‎u tton‎><asp:Label‎ID="lblPa‎g eNum‎" runat‎="serve‎r"></asp:Label‎><asp:LinkB‎u tton‎ID="lbNex‎t" runat‎="serve‎r" OnCli‎c k="lbNex‎t_Cli‎c k">下一页</asp:LinkB‎u tton‎><asp:GridV‎i ew ID="gvMai‎n" runat‎="serve‎r"></asp:GridV‎i ew></div></form></body></ht ml>页面代码using‎Syste‎m;using‎Syste‎m.Data;using‎Syste‎m.Confi‎g urat‎i on;using‎Syste‎m.Web;using‎Syste‎m.Web.Secur‎i ty;using‎Syste‎m.Web.UI;using‎Syste‎m.Web.UI.WebCo‎n trol‎s;using‎Syste‎m.Web.UI.WebCo‎n trol‎s.WebPa‎r ts;using‎Syste‎m.Web.UI.Htm lC‎o ntro‎l s;publi‎c parti‎a l class‎_Defa‎u lt : Syste‎m.Web.UI.Page{CDisp‎l ayOd‎e rsIn‎f o cdoi = new CDisp‎l ayOd‎e rsIn‎f o();//pageI‎n dex 页面索引(页面索引=当前页数-1),pageS‎i ze 每页显示多‎少数据(多少行)//pageC‎o unt 页面的总页‎数priva‎t e stati‎c int pageI‎n dex = 0;priva‎t e stati‎c int pageS‎i ze = 50;priva‎t e stati‎c int pageC‎o unt = 0;prote‎c ted void Page_‎L oad(objec‎t sende‎r, Event‎A rgs e){if (!IsPos‎t Back‎) {GridV‎i ewDa‎t aBin‎d();}}priva‎t e void GridV‎i ewDa‎t aBin‎d() {DataS‎e t ds= cdoi.Displ‎a yOrd‎e rsIn‎f o(pageI‎n dex,pageS‎i ze);gvMai‎n.DataS‎o urce‎= ds;gvMai‎n.DataB‎i nd();pageC‎o unt = cdoi.retur‎n Page‎C ount‎();lblPa‎g eNum‎.Text ="当前页数:"+Conve‎r t.ToStr‎i ng(pageI‎n dex+1);}prote‎c ted void lbPre‎v_Cli‎c k(objec‎t sende‎r, Event‎A rgs e) {pageI‎n dex--;if (pageI‎n dex < 0) {Respo‎n se.Write‎("<scrip‎t langu‎a ge=javas‎c ript‎>alert‎('已到首页!')</scrip‎t>");pageI‎n dex++;retur‎n;}GridV‎i ewDa‎t aBin‎d();}prote‎c ted void lbNex‎t_Cli‎c k(objec‎t sende‎r, Event‎A rgs e) {pageI‎n dex++;if (pageI‎n dex >=pageC‎o unt){Respo‎n se.Write‎("<scrip‎t langu‎a ge=javas‎c ript‎>alert‎('已到尾页!')</scrip‎t>");pageI‎n dex--;retur‎n;}GridV‎i ewDa‎t aBin‎d();}}。

GridView使用大全攻略

1.GridView代码分页排序:效果图:1.AllowSorting设为True,aspx代码中是AllowSorting="True";2.默认1页10条,如果要修改每页条数,修改PageSize即可,在aspx代码中是PageSize="12"。

3.默认的是单向排序的,右击GridView弹出“属性”,选择AllowSorting为True即可。

1:分页保存选中状态保存CheckBox的值GridView在分页过程中并不维护CheckBox的选择状态,幸运的是,我们可以使用Session来维护CheckBox的状态,这个功能使用RememberOldValues完成private void RememberOldValues(){ArrayList categoryIDList = new ArrayList();int index = -1;foreach (GridViewRow row in okZMGV.Rows){index =Convert .ToInt32( okZMGV.DataKeys[row.RowIndex].Value);bool result = ((CheckBox)row.FindControl("IsCheckBox")).Checked;// Check in the Sessionif (Session["state"] != null)categoryIDList = (ArrayList)Session["state"];if (result){if (!categoryIDList.Contains(index))categoryIDList.Add(index);}elsecategoryIDList.Remove(index);}if (categoryIDList != null && categoryIDList.Count > 0)Session["state"] = categoryIDList;}还原CheckBox的状态下一步,需要定义一个方法来还原Checkbox的状态值private void RePopulateValues(){ArrayList categoryIDList = (ArrayList)Session["state"];if (categoryIDList != null && categoryIDList.Count > 0){foreach (GridViewRow row in okZMGV .Rows){int index = (int)okZMGV.DataKeys[row.RowIndex].Value;if (categoryIDList.Contains(index)){CheckBox myCheckBox = (CheckBox)row.FindControl("IsCheckBox"); myCheckBox.Checked = true;}}}}最后,在分页事件里调用上面两个方法protected void page_Click(object sender, ImageClickEventArgs e){RememberOldValues();string count = ((ImageButton)sender).CommandArgument.ToString().ToLower ();switch(count){case"prev":if (okZMGV.PageIndex > 0){okZMGV.PageIndex -= 1;}break;case"next":if (okZMGV.PageIndex < okZMGV.PageCount - 1){okZMGV.PageIndex += 1;}break;case "0":okZMGV.PageIndex=0;break;case "last":okZMGV.PageIndex= okZMGV.pagecount-1;break;}BrndOKBind();RePopulateValues();}2.GridView选中,编辑,取消,删除:效果图:后台代码:你可以使用sqlhelper,本文没用。

GridView的自定义分页,单选、多选、排序

至顶网()-中国最大的企业级IT资源门户-技术成就商务首页网络安全存储服务器软件桌面产品库开发 CIO 白皮书管理软件新闻下载社区专家博客视频CNETNews 中小企业网站联盟开发者在线 /开发者社区首页C/S开发数据库中间件Web嵌入式项目管理网页设计社区搜索《博客三人行》《软话连篇》《边看边读》《至顶大课堂》站点导航:开发者在线 编程[冷枫]关于VS2005中GridView的自定义分页,单选、多选、排序、自增列的简单应用[冷枫]关于VS2005中GridView的自定义分页,单选、多选、排序、自增列的简单应用开发者在线 更新时间:2007-09-23作者:冷枫来源:CSDN本文关键词:冷枫分页单选排序自增列关于VS2005中GridView的自定义分页,单选、多选、排序、自增列的简单应用。

多选时,只有全部选中时“多选”才选中。

图片效果:简单示例,代码如下,fenpage.aspx的代码:<%@ Page Language="C#" AutoEventWireup="true" CodeFile="fenpage.aspx.cs" Inherits="gridview_fenpage" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head runat="server"><title></title><script language="javascript" type="text/javascript">// 判断多选是否与选中项(没有选中的返回false)function slcNo_click(){if (document.form1.checkboxname.length){for (var i=0;i<document.form1.checkboxname.length;i++){if(document.form1.checkboxname[i].checked){return true;}}}else{if(document.form1.checkboxname.checked){return true;}}alert("请选择后再操作!");return false;}// 鼠标经过改变行的颜色if (!objbeforeItem){var objbeforeItem=null;var objbeforeItembackgroundColor=null;}function ItemOver(obj){if(objbeforeItem){objbeforeItem.style.backgroundColor = objbeforeItembackgroundColor; }objbeforeItembackgroundColor = obj.style.backgroundColor;objbeforeItem = obj;obj.style.backgroundColor = "#B9D1F3";}//// 多选的全选与取消function checkJs(boolvalue){if(document.all.checkboxname.length>1){for(var i=0;i<document.all.checkboxname.length;i++){document.all.checkboxname[i].checked = boolvalue; }}elsedocument.all.checkboxname.checked = boolvalue;}//// 只有全部选中时“全选”选中function SingleCheckJs(){var flag1=false;var flag2=false;if (document.form1.checkboxname.length){for (var i=0;i<document.form1.checkboxname.length;i++){if(document.form1.checkboxname[i].checked)flag1 = true;elseflag2 = true;}}else{if(document.form1.checkboxname.checked)flag1 = true;elseflag2 = true;}if(flag1==true&&flag2==false)document.getElementById("chk").checked = true;elsedocument.getElementById("chk").checked = false;}//</script></head><body><form id="form1" runat="server"><div><table cellpadding="0" cellspacing="0" border="0" width="80%" style="font-size: 11px"><tr><td align="center"><asp:GridView ID="GridView1" runat="server" Width="100%" CellPadding="4" ForeColor="#333333"AutoGenerateColumns="False" AllowPaging="True" PageSize="12" BorderColor="Silver"BorderStyle="Solid" BorderWidth="1px" OnRowDataBound="GridView1_RowDataBound"ShowFooter="True" EmptyDataText="没有数据记录!!"AllowSorting="True" OnSorting="GridView1_Sorting"><Columns><asp:BoundField HeaderText="编号" DataField="id" Visible="False" /><asp:TemplateField HeaderText="&lt;input type='checkbox' id='chk' name='chk' onclick='checkJs(this.checked);' /&gt;全选" FooterText="全选"><ItemTemplate><input type="checkbox" id="checkboxname" name="checkboxname" value='<%# DataBinder.Eval(Container.DataItem, "id")%>' onclick='SingleCheckJs();' /></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="单选" FooterText="单选"><ItemTemplate><input type="radio" id="RadioName" name="RadioName" value='<%# Eval("id")%>' /></ItemTemplate></asp:TemplateField><asp:TemplateField HeaderText="自增列" FooterText="自增列"><ItemTemplate><%#(Container.DataItemIndex+1).ToString()%></ItemTemplate></asp:TemplateField><asp:BoundField HeaderText="姓名" FooterText="姓名" DataField="name" SortExpression="name" /><asp:BoundField HeaderText="身份证号" FooterText="身份证号" DataField="card" SortExpression="card" /><asp:BoundField HeaderText="价格" FooterText="价格" DataField="price" DataFormatString=""HtmlEncode="False" SortExpression="price" /> <asp:BoundField HeaderText="数字" FooterText="数字" DataField="price" DataFormatString=""HtmlEncode="False" SortExpression="price" /> <asp:BoundField HeaderText="建立时间" FooterText="建立时间" DataField="createdate" DataFormatString=""HtmlEncode="False"SortExpression="createdate" /></Columns><RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> <EditRowStyle BackColor="#999999" /><SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /><PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /><AlternatingRowStyle BackColor="White" ForeColor="#284775" /><PagerSettings Visible="False" /><FooterStyle Font-Bold="True" /><HeaderStyle Font-Bold="False" Font-Italic="False" /> </asp:GridView></td></tr><tr><td align="center" style="height: 25px"><asp:LinkButton ID="btnFirst" CommandArgument="first" OnClick="PagerButtonClick"runat="server">首页</asp:LinkButton><asp:LinkButton ID="btnPrev" CommandArgument="prev" OnClick="PagerButtonClick" runat="server">上一页</asp:LinkButton><asp:LinkButton ID="btnNext" CommandArgument="next" OnClick="PagerButtonClick" runat="server">下一页</asp:LinkButton><asp:LinkButton ID="btnLast" CommandArgument="last" OnClick="PagerButtonClick" runat="server">尾页</asp:LinkButton><asp:Label ID="LblCurrentIndex" runat="server"></asp:Label><asp:Label ID="LblPageCount" runat="server"></asp:Label> <asp:Label ID="LblRecordCount" runat="server"></asp:Label></td></tr><tr><td><asp:Button ID="Button2" runat="server" Text="checkbox得到选择的行" OnClick="Button2_Click"></asp:Button><asp:Button ID="Button1" runat="server" Text="radio得到选择的行" OnClick="Button1_Click"></asp:Button></td></tr></table></div></form></body></html>fenpage.aspx.cs的代码:using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class gridview_fenpage : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){Button2.Attributes["onclick"] = "return slcNo_click();";GridViewBind("");}private void GridViewBind(string Sqlsort){string connStr = ConfigurationManager.ConnectionStrings["ConnString1"].ConnectionString;string SqlStr = "SELECT * FROM test01 where id<1000" + Sqlsort;DataSet ds = new DataSet();try{SqlConnection conn = new SqlConnection(connStr);if (conn.State.ToString() == "Closed") conn.Open();SqlDataAdapter da = new SqlDataAdapter(SqlStr, conn);da.Fill(ds, "test01");if (conn.State.ToString() == "Open") conn.Close();GridView1.DataSource = ds.Tables[0].DefaultView;GridView1.DataBind();LblCurrentIndex.Text = "第 " + (GridView1.PageIndex + 1).ToString() + " 页";LblPageCount.Text = "共 " + GridView1 .PageCount.ToString()+ " 页"; LblRecordCount.Text = "总共 "+ds.Tables[0].Rows.Count.ToString()+" 条";if (ds.Tables[0].Rows.Count == 0){btnFirst.Visible = false;btnPrev.Visible = false;btnNext.Visible = false;btnLast.Visible = false;LblCurrentIndex.Visible = false;LblPageCount.Visible = false;LblRecordCount.Visible = false;}else if (GridView1.PageCount == 1){btnFirst.Visible = false;btnPrev.Visible = false;btnNext.Visible = false;btnLast.Visible = false;}// 计算生成分页页码,分别为:"首页" "上一页" "下一页" "尾页"mandName = "1";mandName = (GridView1.PageIndex == 0 ? "1" : GridView1.PageIndex.ToString());mandName = (GridView1.PageCount == 1 ? GridView1.PageCount.ToString() : (GridView1.PageIndex + 2).ToString());mandName = GridView1.PageCount.ToString();//}catch(Exception ex){Response.Write("数据库错误,错误原因:"+ex.Message);Response.End();}}protected void PagerButtonClick(object sender, EventArgs e){GridView1.PageIndex = Convert.ToInt32(((LinkButton)sender).CommandName)-1;GridViewBind("");}protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {e.Row.Attributes["onmouseover"] = "ItemOver(this)";}protected void Button2_Click(object sender, EventArgs e){string str="";string []ckb=null;str=Request.Form.Get("checkboxname");ckb=str.Split(new char[]{','});Response.Write("直接在页面中得到的值为:"+str+"<br>");Response.Write("处理后存放在数组中,如下:<br>");for(int i=0;i<ckb.Length;i++){Response.Write("ckb["+i+"]的值为:"+ckb[i]+"<br>");}}protected void Button1_Click(object sender, EventArgs e){Response.Write(Request.Form.Get("RadioName"));}protected void GridView1_Sorting(object sender, GridViewSortEventArgs e){string sql = "";if (ViewState["SortDirection"] == null || ViewState["SortDirection"].ToString().CompareTo("") == 0){ViewState["SortDirection"] = " desc";}elseViewState["SortDirection"] = "";sql = " order by " + e.SortExpression + ViewState["SortDirection"];GridViewBind(sql);}}数据库中表的生成代码:CREATE TABLE [dbo].[test01] ([id] [decimal](18, 0) IDENTITY (1, 1) NOT NULL ,[name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[card] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,[createdate] [datetime] NULL) ON [PRIMARY]GOALTER TABLE [dbo].[test01] ADDCONSTRAINT [DF_test01_createdate] DEFAULT (getdate()) FOR [createdate], CONSTRAINT [PK_test01] PRIMARY KEY CLUSTERED([id]) ON [PRIMARY]GOTrackback: /TrackBack.aspx?PostId=1312814推荐阅读与冷枫分页单选排序自增列相关开发者在线内容冷枫分页单选排序自增列相关技术文章几条常见的数据库分页 SQL 语句调用Oracle存储过程实现快速分达梦数据库查询结果集分页实现使用VS2005打造简单分页浏览器基于的自定义分页显示程序中用Repeater实现分页 翻页后继续维持排序利用实现分页管理器中实现大结果集分页研讨用户评论评论列表发表评论用户名评论内容用户名:邮件地址:BBS讨论ASP怎样显示记录集中的某一记录出现这种错误提示是为什么???就这段代码明明是对的啊,怎么说有错数据透视表相加如何操作问两道 sql题新建的SQL数据库怎么设置登陆名和密phpcms discuz这个连接查询怎么做?什么叫做唯一约束?我理解的对吗?SET sql_mode='' 什么意思更多最新文章?热门栏目推荐C/S开发数据库开发 WEB开发移动嵌入式项目管理网页设计新品快看技术英雄技术看板图片故事热门软件技术推荐XML C/C++ C# Java Oracle Mysql .Net CSS SQL database UNIX Linux Jsp PHP Perl JavaScript ColdFusion ASP/ Apache AJAX开发者在线冷枫最新报道怎样用VS2005进行三层结构应用程序的开发[冷枫]用OTA下载本机J2me程序至手机[冷枫]J2ME中两种Http连接方式Post&Get的比较[冷枫]J2ME开发中的按键事件[冷枫]MIDP2.0声音用法[冷枫]在无线J2ME设备上实现超文本传输协议[冷枫]自己收藏的HelloWorld[冷枫]J2me多线程[冷枫]ASP数据库简单操作教程[冷枫]J2EE架构的6个最佳实践开发者在线分页最新报道几条常见的数据库分页 SQL 语句调用Oracle存储过程实现快速分页达梦数据库查询结果集分页实现使用VS2005打造简单分页浏览器基于的自定义分页显示程序中用Repeater实现分页利用实现分页管理器中实现大结果集分页研讨 2.0数据处理之高级分页/排序一个用JSP实现的分页的类及调用方法开发者在线单选最新报道Delphi中为TreeView添加单选和复选框开发者在线排序最新报道 翻页后继续维持排序 2.0数据处理之高级分页/排序V$TEMPSEG_USAGE与Oracle排序v$tempfile与v$sort_usage之关系解析PB中实现数据窗口动态排序的三种方法 翻页后继续维持排序(2) 翻页后继续维持排序(1)DataGrid同时具有分页和排序功能及注意点 翻页后继续维持排序-爱卡汽车网 | 网上车市 | CNET科技资讯网 | CWEEK | 蜂鸟网 | GameSpot China| 个人电脑 | 开发者在线 | PChome | Solidot | SPN |投影顾问网 | 万维家电网 | 网友世界 | 西域IT | ZDNet China | 中关村在线 | 中小企业成长网 | onlylady女人志联系我们 | 网站导航 | 网站简介 | 友情链接 | 申请自助链接 CNET Networks旗下网站: 选择网站CNET CNET CNET ReviewsCNET mySimonReleaseWebshotsZDNet Copyright ? 1997-2008 CNET Networks 版权所有。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档