---------------------后台:--------------------------- 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { bindProduct(1); } } private void bindProduct(int pageIndex) { string constr = ConfigurationManager.ConnectionStrings["studentConnectionString"].ConnectionString; using (SqlConnection con = new SqlConnection(constr)) { con.Open(); using (SqlCommand cmd = con.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_Product_Select_by_Page_rowNumber"; cmd.Parameters.AddWithValue("@pageSize", 3); cmd.Parameters.Add("@pageCount", System.Data.DbType.Int32).Direction = ParameterDirection.Output; cmd.Parameters.AddWithValue("@pageIndex", pageIndex); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); adapter.Fill(dt); this.DataList1.DataSource = dt; this.DataList1.DataBind(); int pageCount = Convert.ToInt32(cmd.Parameters["@pageCount"].Value); this.HiddenField1.Value = pageCount.ToString(); this.HiddenField2.Value = pageIndex.ToString(); } } } protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) { if (e.CommandName == "Buy") { Response.Write(e.CommandArgument.ToString()); } } protected void DataList1_EditCommand(object source, DataListCommandEventArgs e) { this.DataList1.EditItemIndex = e.Item.ItemIndex; this.bindProduct(1); } protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e) { string ProName = (e.Item.FindControl("txtProductName") as TextBox).Text; string ProStandarde = (e.Item.FindControl("txtProductStandard") as TextBox).Text; string ProPackaging = (e.Item.FindControl("txtPackagingRatio") as TextBox).Text; string ProArtialeNum = (e.Item.FindControl("txtArticleNum") as TextBox).Text; string ProPrice = (e.Item.FindControl("txtPrice") as TextBox).Text; string sql = "update Product set ProductName=@ProductName,ProductStandard=@ProductStandard,PackagingRatio=@PackagingRatio,ArticleNum=@ArticleNum,Price=@Price where PId=@pid"; SqlParameter[] pms = new SqlParameter[]{ new SqlParameter("@ProductName",ProName), new SqlParameter("@ProductStandard",ProStandarde), new SqlParameter("@PackagingRatio",ProPackaging), new SqlParameter("@ArticleNum",ProArtialeNum), new SqlParameter("@Price",ProPrice), new SqlParameter("@pid",e.CommandArgument) }; SQLHelper.ExecuteNonQuery(sql, pms); } protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e) { this.DataList1.EditItemIndex = -1; this.bindProduct(1); } protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e) { string sql = "delete from Product where PId=@pid"; SqlParameter pms = new SqlParameter("@pid", e.CommandArgument); SQLHelper.ExecuteNonQuery(sql, pms); this.bindProduct(1); } protected void btnFirst_Click(object sender, EventArgs e) { this.bindProduct(1); } protected void btnPrev_Click(object sender, EventArgs e) { int index = Convert.ToInt32(this.HiddenField2.Value); if (index > 1) { index--; this.bindProduct(index); } } protected void btnNext_Click(object sender, EventArgs e) { int index = Convert.ToInt32(this.HiddenField2.Value); int pageCount = Convert.ToInt32(this.HiddenField1.Value); if (index<pageCount) { index++; this.bindProduct(index); } } protected void btnLast_Click(object sender, EventArgs e) { this.bindProduct(Convert.ToInt32(this.HiddenField1.Value)); } protected void btnGo_Click(object sender, EventArgs e) { if (Convert.ToInt32(txtPageNumber.Text) <= Convert.ToInt32(HiddenField1.Value)) { this.bindProduct(Convert.ToInt32(txtPageNumber.Text)); } else { Response.Write("您输入的页数超出了总页数,如有需要请重新输入!"); } } protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) { Label1.Text = "第" + (HiddenField2.Value).ToString() + "页,共" + HiddenField1.Value.ToString() + "页"; }
---------------------存储过程----------------------- 复制代码 代码如下: CREATE PROCEDURE [dbo].[sp_Product_Select_by_Page_rowNumber] @pageSize int, --每页记录数量 @pageCount int output, --总页数 @pageIndex int --当前页索引号 AS BEGIN declare @totalRecords int select @totalRecords = count(PId) from Product if(@totalRecords % @pageSize = 0) set @pageCount = @totalRecords / @pageSize; else set @pageCount = @totalRecords / @pageSize +1; with temp as (select row_number() over (order by PId) as id,* from Product) select * from temp where id between (@pageIndex -1)*@pageSize +1 and @pageIndex * @pageSize return @totalRecords end GO