存儲過程:
SQL codeALTER PROCEDURE PageSplit
(
@PageCurrent int, --當前頁
@PageCount int, --每頁的數量
@PageTotal int output --總共有多少記錄
)
AS
declare @Start int --當前頁的第一行是總記錄的第幾行
declare @Last int --當前頁的最後一行是總記錄的第幾行
set @Start=(@PageCurrent-1)*@PageCount+1
set @Last=@PageCurrent*@PageCount
--得到總記錄數
set @PageTotal=(select count(*) from NewsInfo)
--查詢的信息
select NewsTitle,NewsDate from NewsInfo where NewsID between @Start and @Last order by NewsDate desc
RETURN
C# codeusing 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 News_PageSplit : System.Web.UI.Page
{
int PageCount = 5;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
int PageCurrent =1;
ShowMes(PageCurrent, PageCount);
}
}
public void ShowMes(int pagecurrent,int pagecount)
{
SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["PhotoConn"]);
Conn.Open();
SqlDataAdapter da =new SqlDataAdapter ("PageSplit",Conn);
da.SelectCommand.CommandType=CommandType.StoredProcedure;
//SqlParameter[] myparam ={ new SqlParameter("@PageCurrent",pagecurrent),
// new SqlParameter("@PageCount",pagecount)
// };
da.SelectCommand.Parameters.Add("@PageCurrent", pagecurrent);
da.SelectCommand.Parameters.Add("@pageCount",pagecount);
da.SelectCommand.Parameters.Add("@PageTotal",SqlDbType.Int);
da.SelectCommand.Parameters["@PageTotal"].Direction = ParameterDirection.Output;
//綁定數據源
DataSet ds = new DataSet();
da.Fill(ds);
//總記錄數
double total = Convert.ToDouble(da.SelectCommand.Parameters["@PageTotal"].Value);
//總頁數
double page = Math.Ceiling(total / PageCount);
//當前頁
LabCurrent.Text = pagecurrent.ToString();
//總共有多少頁
LabCount.Text = page.ToString();
GridView1.DataSource = ds;
GridView1.DataBind();
BindButton();
}
protected void LinkButton2_Click(object sender, EventArgs e)
{
int current = int.Parse(LabCurrent.Text) - 1;
LabCurrent.Text = current.ToString();
ShowMes(current, PageCount);
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
int current = int.Parse(LabCurrent.Text) + 1;
LabCurrent.Text = current.ToString();
ShowMes(current, PageCount);
}
public void BindButton()
{
if (LabCurrent.Text == "1")
{
LbPrev.Enabled = false;
}
else
{
LbPrev.Enabled = true;
}
if (LabCurrent.Text == LabCount.Text)
{
LBnext.Enabled = false;
}
else
{
LBnext.Enabled = true;
}
}
}