`
javatoyou
  • 浏览: 1015744 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Repeater自定义分页排序(2)

 
阅读更多
分页加排序的存储过程:
  1. --得到总记录数
  2. ifexists(select1fromsys.objectswherename='GetProductsCount'andtype='P')
  3. dropprocGetProductsCount
  4. go
  5. CREATEPROCEDUREGetProductsCount
  6. as
  7. selectcount(*)fromproducts
  8. go
  9. --分页加排序
  10. ifexists(select1fromsys.objectswherename='GetProductsByPage'andtype='P')
  11. dropprocGetProductsByPage
  12. go
  13. CREATEPROCEDUREGetProductsByPage
  14. @sortExpressionnvarchar(100),
  15. @pageNumberint,
  16. @pageSizeint
  17. AS
  18. --确保指定了@sortExpression
  19. IFLEN(@sortExpression)=0
  20. SET@sortExpression='ProductID'
  21. DECLARE@sqlnvarchar(4000)
  22. set@sql='selectProductID,ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued
  23. from(selectrow_number()Over(orderby'+@sortExpression+')asrow,ProductID,ProductName,SupplierID,CategoryID,QuantityPerUnit,UnitPrice,UnitsInStock,UnitsOnOrder,ReorderLevel,Discontinued
  24. fromproducts)asProductsWithRowNumber
  25. whererowbetween'+convert(varchar,(@pageNumber-1)*@pageSize+1)+'and'+convert(varchar,@pageNumber*@pageSize)
  26. execsp_executesql@sql
  27. go
  28. --execGetProductsByPage'productiddesc',1,10
  29. --execGetProductsByPage'ProductNamedesc',5,10
  30. --execGetProductsByPage'',1,10
页面代码
无法忍受如此垃圾的编辑器,页面代码转换的一塌糊涂,所以Repeater标记部分用图片代替
  1. <asp:linkbuttonid="lbtnFirst"runat="server"commandname="First"oncommand="lbtnPage_Command">|<</asp:linkbutton>
  2. <asp:linkbuttonid="lbtnPrevious"runat="server"commandname="Previous"oncommand="lbtnPage_Command"><<</asp:linkbutton>
  3. <asp:labelid="lblMessage"runat="server">
  4. <asp:linkbuttonid="lbtnNext"runat="server"commandname="Next"oncommand="lbtnPage_Command">>></asp:linkbutton>
  5. <asp:linkbuttonid="lbtnLast"runat="server"commandname="Last"oncommand="lbtnPage_Command">>|</asp:linkbutton>
  6. 转到第<asp:dropdownlistid="dropPage"runat="server"autopostback="True"onselectedindexchanged="dropPage_SelectedIndexChanged"></asp:dropdownlist>
  7. </asp:label>
Repeater页面代码
后台代码如下:
  1. usingSystem;
  2. usingSystem.Collections;
  3. usingSystem.Configuration;
  4. usingSystem.Data;
  5. usingSystem.Web;
  6. usingSystem.Web.Security;
  7. usingSystem.Web.UI;
  8. usingSystem.Web.UI.HtmlControls;
  9. usingSystem.Web.UI.WebControls;
  10. usingSystem.Web.UI.WebControls.WebParts;
  11. usingSystem.Data.SqlClient;
  12. publicpartialclassRepeaterPagingSorting:System.Web.UI.Page
  13. {
  14. //每页显示的最多记录的条数
  15. privateintpageSize=10;
  16. //当前页号
  17. privateintcurrentPageNumber;
  18. //排序表达式
  19. privatestringsortExpression=string.Empty;
  20. //排序方向
  21. privatestringsortDirection=string.Empty;
  22. //显示数据的总条数
  23. privatestaticintrowCount;
  24. //总页数
  25. privatestaticintpageCount;
  26. protectedvoidPage_Load(objectsender,EventArgse)
  27. {
  28. if(!IsPostBack)
  29. {
  30. SqlConnectioncn=newSqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
  31. SqlCommandcmd=newSqlCommand("GetProductsCount",cn);
  32. cmd.CommandType=CommandType.StoredProcedure;
  33. cn.Open();
  34. rowCount=(int)cmd.ExecuteScalar();
  35. cn.Close();
  36. pageCount=(rowCount-1)/pageSize+1;
  37. currentPageNumber=1;
  38. for(inti=1;i<=pageCount;i++)
  39. {
  40. dropPage.Items.Add(newListItem(i.ToString(),i.ToString()));
  41. }
  42. dropPage.SelectedValue=dropPage.Items.FindByValue(currentPageNumber.ToString()).Value;
  43. Query();
  44. }
  45. sortExpression=ViewState["sortExpression"].ToString();
  46. sortDirection=ViewState["sortDirection"].ToString();
  47. currentPageNumber=Convert.ToInt32(ViewState["currentPageNumber"]);
  48. }
  49. privatevoidQuery()
  50. {
  51. SetButton(currentPageNumber);
  52. SqlConnectioncn=newSqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString);
  53. SqlCommandcmd=newSqlCommand("GetProductsByPage",cn);
  54. cmd.CommandType=CommandType.StoredProcedure;
  55. cmd.Parameters.AddWithValue("@sortExpression",sortExpression+""+sortDirection);
  56. cmd.Parameters.AddWithValue("@pageNumber",currentPageNumber);
  57. cmd.Parameters.AddWithValue("@pageSize",pageSize);
  58. cn.Open();
  59. rptProducts.DataSource=cmd.ExecuteReader();
  60. rptProducts.DataBind();
  61. cn.Close();
  62. lblMessage.Text="共找到"+rowCount+"条记录,当前第"+currentPageNumber+"/"+pageCount+"页";
  63. Save();
  64. }
  65. protectedvoidlbtnPage_Command(objectsender,CommandEventArgse)
  66. {
  67. switch(e.CommandName)
  68. {
  69. case"First":
  70. currentPageNumber=1;
  71. break;
  72. case"Previous":
  73. currentPageNumber=(int)ViewState["currentPageNumber"]-1>1?(int)ViewState["currentPageNumber"]-1:1;
  74. break;
  75. case"Next":
  76. currentPageNumber=(int)ViewState["currentPageNumber"]+1<pageCount?(int)ViewState["currentPageNumber"]+1:pageCount;
  77. break;
  78. case"Last":
  79. currentPageNumber=pageCount;
  80. break;
  81. }
  82. dropPage.SelectedValue=dropPage.Items.FindByValue(currentPageNumber.ToString()).Value;
  83. Query();
  84. }
  85. protectedvoidlbtnSort_Command(objectsender,CommandEventArgse)
  86. {
  87. if(e.CommandName!=ViewState["sortExpression"].ToString())
  88. {
  89. sortDirection="ASC";
  90. }
  91. else
  92. {
  93. if(sortDirection=="ASC")
  94. {
  95. sortDirection="DESC";
  96. }
  97. elseif(sortDirection=="DESC"||sortDirection==string.Empty)
  98. {
  99. sortDirection="ASC";
  100. }
  101. }
  102. sortExpression=e.CommandName;
  103. Query();
  104. }
  105. protectedvoiddropPage_SelectedIndexChanged(objectsender,EventArgse)
  106. {
  107. currentPageNumber=int.Parse(dropPage.SelectedValue);
  108. Query();
  109. }
  110. privatevoidSetButton(intcurrentPageNumber)
  111. {
  112. lbtnFirst.Enabled=currentPageNumber!=1;
  113. lbtnPrevious.Enabled=currentPageNumber!=1;
  114. lbtnNext.Enabled=currentPageNumber!=pageCount;
  115. lbtnLast.Enabled=currentPageNumber!=pageCount;
  116. }
  117. privatevoidSave()
  118. {
  119. ViewState["currentPageNumber"]=currentPageNumber;
  120. ViewState["sortExpression"]=sortExpression;
  121. ViewState["sortDirection"]=sortDirection;
  122. }
  123. protectedvoidrptProducts_ItemCreated(objectsender,RepeaterItemEventArgse)
  124. {
  125. if(e.Item.ItemType==ListItemType.Header)
  126. {
  127. if(!string.IsNullOrEmpty(sortDirection))
  128. {
  129. LabellblSort=newLabel();
  130. lblSort.EnableTheming=false;
  131. lblSort.Font.Name="webdings";
  132. lblSort.Font.Size=FontUnit.Small;
  133. lblSort.Text=sortDirection=="ASC"?"5":"6";
  134. (e.Item.FindControl("td"+sortExpression)asHtmlTableCell).Controls.Add(lblSort);
  135. }
  136. }
  137. }
  138. }
分页排序效果图: Repeater自定义分页+排序
分享到:
评论

相关推荐

    自定义控件之万能Repeater源码

    为什么要用Repeater,因为Repeater的性能最好,扩展性最强。为什么现在用Repeater的人越来越少,因为其可操作性相对较差。Repeater 完成列表,分页,全选,批量删除,排序等功能。

    asp.net2.0

    排序自定义分页数据 创建自定义排序用户界面 自定义按钮行为 GridView里的Button 使用DataList和Repeater显示数据 用DataList和Repeater来显示数据 格式化DataList和Repeater的数据 使用DataList来一行显示多...

    asp.net2.0数据教程

    排序自定义分页数据 创建自定义排序用户界面 自定义按钮行为 GridView里的Button 使用DataList和Repeater显示数据 用DataList和Repeater来显示数据 格式化DataList和Repeater的数据 使用DataList来一行显示多...

    ASP.NET2.0数据教程

    排序自定义分页数据 创建自定义排序用户界面 自定义按钮行为 GridView里的Button 使用DataList和Repeater显示数据 用DataList和Repeater来显示数据 格式化DataList和Repeater的数据 使用DataList来一行显示多...

    自定义控件之万能Repeater源码 asp.net

    那么,如果我只需拖动一个Repeater 然后给他一个数据源 就可以完成列表,分页,全选,批量删除,排序等功能。那么你还会说Repeater的可操作性差吗? 1.此程序存储过程是基于SQL2005的,暂不提供SQL2000下的 2....

    asp.net c#自定义控件之万能Repeater源码

    自定义控件之万能Repeater源码 为什么要用Repeater,因为Repeater的...那么,如果我只需拖动一个Repeater 然后给他一个数据源 就可以完成列表,分页,全选,批量删除,排序等功能。那么你还会说Repeater的可操作性差吗?

    在ASP.NET 2.0中操作数据之四十四:DataList和Repeater数据排序(三)

    第七步: 在自定义分页的Repeater 里添加排序功能  现在已经完成了自定义分页,我们再来添加排序功能。ProductsBLL类的GetProductsPagedAndSorted方法和GetProductsPaged一样有startRowIndex 和 maximumRows 参数,...

    在ASP.NET 2.0中操作数据之二十九:用DataList和Repeater来显示数据

    导言  在之前的28篇教程的例子里,... 为了在显示多条记录时,有更好的自定义功能,ASP.NET 2.0提供了DataList 和Repeater (ASP.NET 1.x版本里也有 ).DataList 和Repeater 使用模板来显示内容,而不是象在GridView里那样

    ASP.NET高级编程:校园BBS里的数据绑定.pptx

    分页和排序 自定义列 ;DataSet对象 DataSet对象即数据集对象,采用断开连接数据访问模式。 DataSet对象是数据的一种内存驻留表示形式,无论包含的数据来自什么数据源,它都会提供一致的关系编程模型。 DataSet对象把...

    ASP.NET 控件的使用

    14.2.1 创建自定义分页用户界面 458 14.2.2 使用DataPager控件进行数据源分页 459 14.3 小结 461 第四部分 创建组件 第15章 创建组件 464 15.1 创建基本组件 464 15.1.1 组件和动态编译 466 15.1.2 App_Code文件夹...

    ASP.NET.4揭秘

    14.2.1 创建自定义分页用户界面524 14.2.2 使用datapager控件进行数据源分页526 14.3 小结527 第15章 使用chart控件528 15.1 chart控件的基础知识528 15.1.1 使用chart控件显示数据528 15.1.2 排序和过滤数据532 ...

    ASP.NET Web程序设计 第八章 数据绑定控件(二)

    1、GridView 控件以表格的形式显示数据源的数据,其最大的特点是自动化程度高,可以在不编写代码的情况下实现分页和排序等功能。 2、GridView可以显示多种类型的字段 1)BoundField:默认的数据绑定字段列,以文本的...

    C#经验技巧宝典11-15.rar

    0446 使用GridView Web服务器控件自定义外观风格 247 0447 使用GridView Web服务器控件的简单排序 247 0448 如何在GridView Web服务器控件中分页 248 0449 使用GridView Web服务器控件编辑数据 249 0450...

    ASP.net技术内幕

    11.3.1 在DataGrid控件中创建列 11.3.2 对DataGrid使用样式 11.3.3 对DataGrid控件中的列进行排序 11.3.4 对DataGrid中的记录进行分页 11.3.5 选择DataGrid控件中的行 11.3.6 编辑...

    WebCommon.dll 超赞的C#编程助手

    2. CommonList类和ImgList为您提供了简捷实用的文章列表和图文列表自动生成方法,在MVC中生成列表就象在WebForm中使用Repeater一样方便。 3. lg类(Logic的缩写)为您提供大量的简化代码的函数,例如把String转成Int...

    asp.net专家疑难解答200问源码

    118.如何在DataGrid控件中实现自定义分页功能 119.如何在DataGrid中弹出一个详细信息窗口-示例1 119.如何在DataGrid中弹出一个详细信息窗口-示例2 120. 如何在DataGrid控件中添加CheckBox控件列 121.如何为...

    WebCommon3.1.dll 强大的C#编程助手

    2、CommonList类和ImgList还为您提供了简捷实用的文章列表和图文列表自动生成方法,在MVC中生成列表就象在WebForm中使用Repeater一样方便。 3、lg类(Logic的缩写)为您提供大量的简化代码的函数,例如把String转成...

Global site tag (gtag.js) - Google Analytics