今天晚上手痒,写了一下代码。使用aspnetpager这个免费的分页控件。
aspx页面部分代码如下:
- <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="WebForm1.aspx.cs"Inherits="LearningAspNet.无刷新分页.WebForm1"%>
- <%@Registerassembly="AspNetPager"namespace="Wuqi.Webdiyer"tagprefix="webdiyer"%>
- <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <headrunat="server">
- <title>AspNetPager+存储过程完成分页</title>
- </head>
- <body>
- <formid="form1"runat="server">
- <div>
- <asp:RepeaterID="Repeater1"runat="server"onitemcommand="Repeater1_ItemCommand"
- onitemdatabound="Repeater1_ItemDataBound">
- <HeaderTemplate><!--头模板-->
- <table><tr>
- <td>学生编号</td>
- <td>学生姓名</td>
- <td>学生性别</td>
- <tdalign="center">操作</td>
- </tr>
- </HeaderTemplate>
- <ItemTemplate><!--项模板-->
- <tr>
- <td><%#Eval("sid")%></td>
- <td><%#Eval("sname")%></td>
- <td><%#Eval("ssex")%></td>
- <td><asp:ButtonID="Button1"runat="server"Text="Button"CommandName="btn"CommandArgument='<%#Eval("sid")%>'/>
- </td></tr>
- </ItemTemplate>
- <AlternatingItemTemplate><!--交替行-->
- <trstyle="background-color:Aqua">
- <td><%#Eval("sid")%></td>
- <td><%#Eval("sname")%></td>
- <td><%#Eval("ssex")%></td>
- <td>
- <asp:ButtonID="Button1"runat="server"Text="Button"CommandName="btn"CommandArgument='<%#Eval("sid")%>'/>
- </td>
- </tr>
- </AlternatingItemTemplate>
- <FooterTemplate><!--脚模板-->
- </table>
- </FooterTemplate>
- </asp:Repeater>
- <asp:LabelID="Label1"runat="server"Text=""></asp:Label>
- </div>
- <webdiyer:AspNetPagerID="AspNetPager1"runat="server"OnPageChanged="AspNetPager1_PageChanged">
- </webdiyer:AspNetPager>
- </form>
- </body>
- </html>
cs后台部分代码:
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.Linq;
- usingSystem.Web;
- usingSystem.Web.UI;
- usingSystem.Web.UI.WebControls;
- usingSystem.Data;
- usingSystem.Data.SqlClient;
- usingSystem.Configuration;
- namespaceLearningAspNet.无刷新分页
- {
- publicpartialclassWebForm1:System.Web.UI.Page
- {
- stringconnStr=ConfigurationManager.ConnectionStrings["studentConnectionString"].ToString();
- protectedvoidPage_Load(objectsender,EventArgse)
- {
- if(!IsPostBack)
- {
- bind();
- }
- }
- ///<summary>
- ///绑定数据
- ///</summary>
- privatevoidbind()
- {
- this.AspNetPager1.RecordCount=getRecordCount();//总记录数
- intcurPage=this.AspNetPager1.CurrentPageIndex;//当前页的索引
- intcount=this.AspNetPager1.PageSize=3;//每页显示条数
- Repeater1.DataSource=getData(curPage,count,"stuinfo","sid");
- Repeater1.DataBind();
- }
- ///<summary>
- ///获取数据源
- ///</summary>
- ///<paramname="curPage">当前页</param>
- ///<paramname="count">每页显示的条数</param>
- ///<paramname="tblName">表名</param>
- ///<paramname="colum">主键(标识)</param>
- ///<returns></returns>
- privateDataSetgetData(intcurPage,intcount,stringtblName,stringcolum){
- SqlConnectionconn=newSqlConnection(connStr);
- try
- {
- conn.Open();
- DataSetds=newDataSet();
- SqlCommandcmd=newSqlCommand();
- SqlDataAdapterda=newSqlDataAdapter(cmd);
- cmd.Connection=conn;
- cmd.CommandType=CommandType.StoredProcedure;
- cmd.CommandText="page";
- //给存储过程添加参数
- cmd.Parameters.Add(newSqlParameter("@currentPage",SqlDbType.Int));
- cmd.Parameters.Add(newSqlParameter("@count",SqlDbType.Int));
- cmd.Parameters.Add(newSqlParameter("@tableName",SqlDbType.VarChar));
- cmd.Parameters.Add(newSqlParameter("@column",SqlDbType.VarChar));
- //给参数赋值
- da.SelectCommand.Parameters["@currentPage"].Value=curPage;
- da.SelectCommand.Parameters["@count"].Value=count;
- da.SelectCommand.Parameters["@tableName"].Value=tblName;
- da.SelectCommand.Parameters["@column"].Value=colum;
- //da.SelectCommand=cmd;
- da.Fill(ds);
- returnds;
- }
- catch(Exception)
- {
- throw;
- }
- finally{
- conn.Close();
- }
- }
- ///<summary>
- ///查询总记录数
- ///</summary>
- ///<returns></returns>
- privateintgetRecordCount()
- {
- inti=0;
- SqlConnectionconn=newSqlConnection(connStr);
- conn.Open();
- stringsql="selectcount(*)fromstuinfo";//查询处总记录数
- SqlDataAdapterda=newSqlDataAdapter(sql,conn);
- objectobj=da.SelectCommand.ExecuteScalar();//查询结果的第一行第一列--总记录条数
- i=int.Parse(obj.ToString());//总记录条数
- conn.Close();
- returni;
- }
- ///<summary>
- ///翻页事件
- ///</summary>
- ///<paramname="sender"></param>
- ///<paramname="e"></param>
- protectedvoidAspNetPager1_PageChanged(objectsender,EventArgse)
- {
- bind();
- }
- ///<summary>
- ///DataList控件中点击任意一列的按钮会发生
- ///</summary>
- ///<paramname="source"></param>
- ///<paramname="e"></param>
- protectedvoidRepeater1_ItemCommand(objectsource,RepeaterCommandEventArgse)
- {
- if(e.CommandName=="btn")
- {
- Label1.Text="我的学号是"+e.CommandArgument.ToString();
- Label1.Style["color"]="red";
- }
- }
- ///<summary>
- ///每一项绑定的时候
- ///</summary>
- ///<paramname="sender"></param>
- ///<paramname="e"></param>
- protectedvoidRepeater1_ItemDataBound(objectsender,RepeaterItemEventArgse)
- {
- if(e.Item.ItemType==ListItemType.Item)
- {
- Buttonbtn=(Button)e.Item.FindControl("Button1");//找到按钮
- btn.Text="汇报";
- }elseif(e.Item.ItemType==ListItemType.AlternatingItem)
- {
- Buttonbtn=(Button)e.Item.FindControl("Button1");
- btn.Text="汇报";
- }
- }
- }
- }
数据库部分,分页存储过程:
- --存储过程实现灵活的分页
- ifobject_id('page','p')isnotnull
- dropprocpage
- go
- createprocpage
- @currentPageint=1,--要查询第几页
- @countint=10,--每页显示几条
- @tableNamevarchar(20),--表名
- @columnvarchar(20)--列名
- as
- declare@sqlnvarchar(1000)
- set@sql=N'selecttop'+cast(@countasnvarchar(3))
- set@sql=@sql+N'*from'+@tableName+'where'+@column+'notin('
- set@sql=@sql+N'selecttop'+cast(((@currentPage-1)*@count)asnvarchar(3))
- set@sql=@sql+@column+N'from'+@tableName+')'
- exec(@sql)
- go
- execpage1,2,'stuinfo','sid'--测试存储过程
由于时间有限,代码写的很仓促,很凌乱。大家请勿笑话!