存储过程:
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;
}
}
}