1、第一步 定义静态变量 private static int startpa,stoppa;
2、第二步 在Page_load下定义ASPNETPAGER的RecordCount
3、第三步 在PageChanged事件中添加代码
附1:实现代码
private void Page_Load(object sender, System.EventArgs e)
{
if (!Page.IsPostBack )
{
startpa=1;
stoppa=6;
show("GetAuthors","",startpa,stoppa);
pager1.RecordCount =20; '此处定义总记录数,在应用中应先计算
}
}
private void show(string storpro,string firpra,int secpra,int thirpra)
{
SqlConnection con=new SqlConnection();
con.ConnectionString="server=(local);user id=sa;pwd=sa;database=pubs";
con.Open();
SqlCommand cmd=new SqlCommand();
cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText=storpro;
cmd.Parameters.Add("@Author_Last_Name",SqlDbType.VarChar,100);
cmd.Parameters["@Author_Last_Name"].Direction=ParameterDirection.Input;
cmd.Parameters["@Author_Last_Name"].Value=firpra;
cmd.Parameters.Add("@StartRow",SqlDbType.Int );
cmd.Parameters["@StartRow"].Direction=ParameterDirection.Input;
cmd.Parameters["@StartRow"].Value=secpra;
cmd.Parameters.Add("@StopRow",SqlDbType.Int );
cmd.Parameters["@StopRow"].Direction=ParameterDirection.Input;
cmd.Parameters["@StopRow"].Value=thirpra;
cmd.Connection=con;
SqlDataAdapter da=new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
da.Fill(ds,"tt");
DataGrid1.DataSource=ds.Tables["tt"].DefaultView ;
DataGrid1.DataBind();
da.Dispose ();
ds.Dispose ();
con.Close ();
}
private void Button1_Click(object sender, System.EventArgs e) '自定义翻页(下翻)
{
startpa = startpa+ DataGrid1.PageSize;
stoppa = stoppa + DataGrid1.PageSize;
show("GetAuthors","", startpa,stoppa);
}
private void Button2_Click(object sender, System.EventArgs e) '自定义翻页(上翻)
{
startpa = startpa- DataGrid1.PageSize;
stoppa = stoppa - DataGrid1.PageSize;
show("GetAuthors","", startpa,stoppa);
}
private void pager1_PageChanged(object src, Wuqi.Webdiyer.PageChangedEventArgs e)
{
int curpage;
pager1.CurrentPageIndex=e.NewPageIndex;
curpage=pager1.CurrentPageIndex;
startpa=DataGrid1.PageSize *(curpage-1)+1 ;
stoppa=DataGrid1.PageSize *(curpage);
show("GetAuthors","", startpa,stoppa);
}
}
附2:使用的存储过程
create proc GetAuthors
@Author_Last_Name as varchar(100) = null,
@StartRow as int = null,
@StopRow as int = null
AS
---- 建立有标识符列的table变量
declare @t_table table
(
[rownum] [int] IDENTITY (1, 1) Primary key NOT NULL ,
[Author_Last_Name] [varchar] (40) ,
[Author_First_Name] [varchar] (20) ,
[phone] [char] (12) ,
[address] [varchar] (40) ,
[city] [varchar] (20) ,
[state] [char] (2) ,
[zip] [char] (5)
)
---- 在返回指定的@StopRow行数之后停止处理查询
Set RowCount @StopRow
---- 插入到table变量中
insert @t_table
(
[Author_Last_Name],[Author_First_Name],[phone],[address],[city],[state],[zip]
)
SELECT [au_lname],[au_fname],[phone],[address],[city],[state],[zip]
FROM authors
WHERE au_lname like '%' + @Author_Last_Name + '%'
ORDER BY au_lname
---- 返回到正确的结果
SELECT * FROM @t_table WHERE rownum >= @StartRow
ORDER BY rownum
GO