`
java-mans
  • 浏览: 11427289 次
文章分类
社区版块
存档分类
最新评论

aspnetpager实现高效分页

 
阅读更多

今天晚上手痒,写了一下代码。使用aspnetpager这个免费的分页控件。

aspx页面部分代码如下:

Code:
  1. <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="WebForm1.aspx.cs"Inherits="LearningAspNet.无刷新分页.WebForm1"%>
  2. <%@Registerassembly="AspNetPager"namespace="Wuqi.Webdiyer"tagprefix="webdiyer"%>
  3. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <htmlxmlns="http://www.w3.org/1999/xhtml">
  5. <headrunat="server">
  6. <title>AspNetPager+存储过程完成分页</title>
  7. </head>
  8. <body>
  9. <formid="form1"runat="server">
  10. <div>
  11. <asp:RepeaterID="Repeater1"runat="server"onitemcommand="Repeater1_ItemCommand"
  12. onitemdatabound="Repeater1_ItemDataBound">
  13. <HeaderTemplate><!--头模板-->
  14. <table><tr>
  15. <td>学生编号</td>
  16. <td>学生姓名</td>
  17. <td>学生性别</td>
  18. <tdalign="center">操作</td>
  19. </tr>
  20. </HeaderTemplate>
  21. <ItemTemplate><!--项模板-->
  22. <tr>
  23. <td><%#Eval("sid")%></td>
  24. <td><%#Eval("sname")%></td>
  25. <td><%#Eval("ssex")%></td>
  26. <td><asp:ButtonID="Button1"runat="server"Text="Button"CommandName="btn"CommandArgument='<%#Eval("sid")%>'/>
  27. </td></tr>
  28. </ItemTemplate>
  29. <AlternatingItemTemplate><!--交替行-->
  30. <trstyle="background-color:Aqua">
  31. <td><%#Eval("sid")%></td>
  32. <td><%#Eval("sname")%></td>
  33. <td><%#Eval("ssex")%></td>
  34. <td>
  35. <asp:ButtonID="Button1"runat="server"Text="Button"CommandName="btn"CommandArgument='<%#Eval("sid")%>'/>
  36. </td>
  37. </tr>
  38. </AlternatingItemTemplate>
  39. <FooterTemplate><!--脚模板-->
  40. </table>
  41. </FooterTemplate>
  42. </asp:Repeater>
  43. <asp:LabelID="Label1"runat="server"Text=""></asp:Label>
  44. </div>
  45. <webdiyer:AspNetPagerID="AspNetPager1"runat="server"OnPageChanged="AspNetPager1_PageChanged">
  46. </webdiyer:AspNetPager>
  47. </form>
  48. </body>
  49. </html>

cs后台部分代码:

Code:
  1. usingSystem;
  2. usingSystem.Collections.Generic;
  3. usingSystem.Linq;
  4. usingSystem.Web;
  5. usingSystem.Web.UI;
  6. usingSystem.Web.UI.WebControls;
  7. usingSystem.Data;
  8. usingSystem.Data.SqlClient;
  9. usingSystem.Configuration;
  10. namespaceLearningAspNet.无刷新分页
  11. {
  12. publicpartialclassWebForm1:System.Web.UI.Page
  13. {
  14. stringconnStr=ConfigurationManager.ConnectionStrings["studentConnectionString"].ToString();
  15. protectedvoidPage_Load(objectsender,EventArgse)
  16. {
  17. if(!IsPostBack)
  18. {
  19. bind();
  20. }
  21. }
  22. ///<summary>
  23. ///绑定数据
  24. ///</summary>
  25. privatevoidbind()
  26. {
  27. this.AspNetPager1.RecordCount=getRecordCount();//总记录数
  28. intcurPage=this.AspNetPager1.CurrentPageIndex;//当前页的索引
  29. intcount=this.AspNetPager1.PageSize=3;//每页显示条数
  30. Repeater1.DataSource=getData(curPage,count,"stuinfo","sid");
  31. Repeater1.DataBind();
  32. }
  33. ///<summary>
  34. ///获取数据源
  35. ///</summary>
  36. ///<paramname="curPage">当前页</param>
  37. ///<paramname="count">每页显示的条数</param>
  38. ///<paramname="tblName">表名</param>
  39. ///<paramname="colum">主键(标识)</param>
  40. ///<returns></returns>
  41. privateDataSetgetData(intcurPage,intcount,stringtblName,stringcolum){
  42. SqlConnectionconn=newSqlConnection(connStr);
  43. try
  44. {
  45. conn.Open();
  46. DataSetds=newDataSet();
  47. SqlCommandcmd=newSqlCommand();
  48. SqlDataAdapterda=newSqlDataAdapter(cmd);
  49. cmd.Connection=conn;
  50. cmd.CommandType=CommandType.StoredProcedure;
  51. cmd.CommandText="page";
  52. //给存储过程添加参数
  53. cmd.Parameters.Add(newSqlParameter("@currentPage",SqlDbType.Int));
  54. cmd.Parameters.Add(newSqlParameter("@count",SqlDbType.Int));
  55. cmd.Parameters.Add(newSqlParameter("@tableName",SqlDbType.VarChar));
  56. cmd.Parameters.Add(newSqlParameter("@column",SqlDbType.VarChar));
  57. //给参数赋值
  58. da.SelectCommand.Parameters["@currentPage"].Value=curPage;
  59. da.SelectCommand.Parameters["@count"].Value=count;
  60. da.SelectCommand.Parameters["@tableName"].Value=tblName;
  61. da.SelectCommand.Parameters["@column"].Value=colum;
  62. //da.SelectCommand=cmd;
  63. da.Fill(ds);
  64. returnds;
  65. }
  66. catch(Exception)
  67. {
  68. throw;
  69. }
  70. finally{
  71. conn.Close();
  72. }
  73. }
  74. ///<summary>
  75. ///查询总记录数
  76. ///</summary>
  77. ///<returns></returns>
  78. privateintgetRecordCount()
  79. {
  80. inti=0;
  81. SqlConnectionconn=newSqlConnection(connStr);
  82. conn.Open();
  83. stringsql="selectcount(*)fromstuinfo";//查询处总记录数
  84. SqlDataAdapterda=newSqlDataAdapter(sql,conn);
  85. objectobj=da.SelectCommand.ExecuteScalar();//查询结果的第一行第一列--总记录条数
  86. i=int.Parse(obj.ToString());//总记录条数
  87. conn.Close();
  88. returni;
  89. }
  90. ///<summary>
  91. ///翻页事件
  92. ///</summary>
  93. ///<paramname="sender"></param>
  94. ///<paramname="e"></param>
  95. protectedvoidAspNetPager1_PageChanged(objectsender,EventArgse)
  96. {
  97. bind();
  98. }
  99. ///<summary>
  100. ///DataList控件中点击任意一列的按钮会发生
  101. ///</summary>
  102. ///<paramname="source"></param>
  103. ///<paramname="e"></param>
  104. protectedvoidRepeater1_ItemCommand(objectsource,RepeaterCommandEventArgse)
  105. {
  106. if(e.CommandName=="btn")
  107. {
  108. Label1.Text="我的学号是"+e.CommandArgument.ToString();
  109. Label1.Style["color"]="red";
  110. }
  111. }
  112. ///<summary>
  113. ///每一项绑定的时候
  114. ///</summary>
  115. ///<paramname="sender"></param>
  116. ///<paramname="e"></param>
  117. protectedvoidRepeater1_ItemDataBound(objectsender,RepeaterItemEventArgse)
  118. {
  119. if(e.Item.ItemType==ListItemType.Item)
  120. {
  121. Buttonbtn=(Button)e.Item.FindControl("Button1");//找到按钮
  122. btn.Text="汇报";
  123. }elseif(e.Item.ItemType==ListItemType.AlternatingItem)
  124. {
  125. Buttonbtn=(Button)e.Item.FindControl("Button1");
  126. btn.Text="汇报";
  127. }
  128. }
  129. }
  130. }

数据库部分,分页存储过程:

Code:
  1. --存储过程实现灵活的分页
  2. ifobject_id('page','p')isnotnull
  3. dropprocpage
  4. go
  5. createprocpage
  6. @currentPageint=1,--要查询第几页
  7. @countint=10,--每页显示几条
  8. @tableNamevarchar(20),--表名
  9. @columnvarchar(20)--列名
  10. as
  11. declare@sqlnvarchar(1000)
  12. set@sql=N'selecttop'+cast(@countasnvarchar(3))
  13. set@sql=@sql+N'*from'+@tableName+'where'+@column+'notin('
  14. set@sql=@sql+N'selecttop'+cast(((@currentPage-1)*@count)asnvarchar(3))
  15. set@sql=@sql+@column+N'from'+@tableName+')'
  16. exec(@sql)
  17. go
  18. execpage1,2,'stuinfo','sid'--测试存储过程

由于时间有限,代码写的很仓促,很凌乱。大家请勿笑话!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics