首先在数据库创建存储过程 复制代码 代码如下: create proc usp_role_GetDateByPageIndex @pageSize int, @pageIndex int as begin select * from ( select *,ROW_NUMBER() over(order by role_id) as rownumber from role) as tbl where tbl.rownumber between (@pageSize*(@pageIndex-1)+1) and @pageIndex*@pageSize end exec usp_role_GetDateByPageIndex 5,3
在项目中添加BLL,DAL,DataAccess,MODEL层 在DAL中写一个方法: 复制代码 代码如下: //自己写的方法,分页获取数据列表 public DataTable GetListDataTable(int PageSize, int PageIndex) { SqlParameter[] parameters = { new SqlParameter("@PageSize", SqlDbType.Int), new SqlParameter("@PageIndex", SqlDbType.Int) }; parameters[0].Value = PageSize; parameters[1].Value = PageIndex; return DbHelperSQL.RunProcedureDataTable("usp_role_GetDateByPageIndex", parameters); } 在BLL中调用GetListDataTable: public DataTable GetListDataTable(int pagesize, int pageindex) { return dal.GetListDataTable(pagesize, pageindex); } 在DbHelper中添加RunProcedureDataTable方法: public static DataTable RunProcedureDataTable(string stroreProcName, IDataParameter[] parameters) { using (SqlConnection connection = new SqlConnection(connectionString)) { DataTable dt = new DataTable(); connection.Open(); SqlDataAdapter sqlDA = new SqlDataAdapter(); sqlDA.SelectCommand = BuildQueryCommand(connection, stroreProcName, parameters); sqlDA.Fill(dt); connection.Close(); return dt; } }
然后在后台调用即可: 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; namespace 练习 { public partial class paging : System.Web.UI.Page { int pagesize = 10; int pageindex = 1; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ViewState["pageindex"] = 1; LadaData(); GetListPageindex(); } } private void GetListPageindex() { BLL.T_News1 bnews = new BLL.T_News1(); int totalcount = bnews.GetRecordCount(""); if (totalcount % pagesize == 0) { ViewState["lastpageindex"] = totalcount / pagesize; } else { ViewState["lastpageindex"] = totalcount / pagesize + 1; } } private void LadaData() { BLL.T_News1 bnews = new BLL.T_News1(); DataTable dt = bnews.GetListDataTable(pagesize, Convert.ToInt32(ViewState["pageindex"])); this.GridView1.DataSource = dt; this.GridView1.DataBind(); } //第一页 protected void btnFirst_Click(object sender, EventArgs e) { ViewState["pageindex"] = 1; LadaData(); } //上一页 protected void btnPre_Click(object sender, EventArgs e) { int pageindex = Convert.ToInt32(ViewState["pageindex"]); if (pagesize>1) { pageindex--; ViewState["pageindex"] = pageindex; LadaData(); } } //下一页 protected void btnNext_Click(object sender, EventArgs e) { int pageindex = Convert.ToInt32(ViewState["pageindex"]); if (pageindex<Convert.ToInt32(ViewState["lastpageindex"])) { pageindex++; ViewState["pageindex"] = pageindex; LadaData(); } } //最后一页 protected void btnLast_Click(object sender, EventArgs e) { ViewState["pageindex"] = ViewState["lastpageindex"]; LadaData(); } //跳转页面 protected void btnSkip_Click(object sender, EventArgs e) { int result; if (int.TryParse(txtPagination.Text, out result) == true) { ViewState["pageindex"] = txtPagination.Text.Trim(); LadaData(); } else { txtPagination.Text = "请输入合法的数字"; } } } }