http://blog.csdn.net/jiuqiyuliang/article/details/19967031

目录:

基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现添加、编辑、删除(三)

基于asp.net + easyui框架,一步步学习easyui-datagrid——完成,总结(四)

上篇博客我只是将界面的部分完成了,继续上篇博客的内容,这篇博客我们需要将数据库中的记录显示到界面上,并实现数据的分页显示。

曾经我写过分页的博客,分页很简单, 本质区别在于分页时从数据库读取信息的方式:假分页:一次性读取数据;真分页:多次读取数据。datagrid使用的是真分页,将记录从数据库查询出来就行了。

下面我们看一下要实现的界面:

说实话,加载数据并实现分页和搜索的功能相对而言是很简单,无非就是调用一般处理程序,只要你会一般处理程序就没有任何问题。

在上篇博客中,我已将datagrid要调用的一般处理程序的URL写好了,所以我们现在只需要写一般处理程序的代码和后台的代码就好了。在一般处理程序中,我们将分页和查询功能巧妙的整合到了一起。

搜索的js代码

  1. //获取参数
  2. function getQueryParams(queryParams) {
  3. var StartTime = $("#StartTime").datebox("getValue");
  4. var EndTime = $("#EndTime").datebox("getValue");
  5. var AdminName = document.getElementById("AdminName").value;
  6. var QuanXian = document.getElementById("quanxian").value;
  7. //$("#quanxian").combobox("getValue");
  8. queryParams.StartTime = StartTime;
  9. queryParams.EndTime = EndTime;
  10. queryParams.AdminName = AdminName;
  11. queryParams.QuanXian = QuanXian;
  12. return queryParams;
  13. }
  14. //增加查询参数,重新加载表格
  15. function reloadgrid() {
  16. //查询参数直接添加在queryParams中
  17. var queryParams = $('#tt').datagrid('options').queryParams;
  18. getQueryParams(queryParams);
  19. $('#tt').datagrid('options').queryParams = queryParams;
  20. $("#tt").datagrid('reload');
  21. }

一般处理程序SetAdmin.ashx

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Data;
  6. using System.Text;
  7. namespace GoodCommunitySystem.admin.UserManager
  8. {
  9. /// <summary>
  10. /// SetAdmin 的摘要说明
  11. /// </summary>
  12. public class SetAdmin : IHttpHandler
  13. {
  14. BLL.adminInfoBLL admininfobll = new BLL.adminInfoBLL();
  15. Entity.adminInfoEntity enadmininfo = new Entity.adminInfoEntity();
  16. public void ProcessRequest(HttpContext context)
  17. {
  18. //调用查询方法
  19. Query(context);
  20. }
  21. public bool IsReusable
  22. {
  23. get
  24. {
  25. return false;
  26. }
  27. }
  28. /// <summary>
  29. /// 查询记录
  30. /// </summary>
  31. /// <param name="context"></param>
  32. public void Query(HttpContext context)
  33. {
  34. context.Response.ContentType = "text/plain";
  35. //===============================================================
  36. //获取查询条件:【用户id,开始时间,结束时间,关键字】
  37. string AdminName, startTime, endTime, QuanXian;
  38. AdminName = startTime = endTime = QuanXian = "";
  39. //获取前台传来的值
  40. if (null != context.Request.QueryString["AdminName"])
  41. {//获取前台传来的值
  42. AdminName = context.Request.QueryString["AdminName"].ToString().Trim();
  43. }
  44. if (null != context.Request.QueryString["StartTime"])
  45. {
  46. startTime = context.Request.QueryString["StartTime"].ToString().Trim();
  47. }
  48. if (null != context.Request.QueryString["EndTime"])
  49. {
  50. endTime = context.Request.QueryString["EndTime"].ToString().Trim();
  51. }
  52. if (null != context.Request.QueryString["QuanXian"])
  53. {
  54. QuanXian = context.Request.QueryString["QuanXian"].ToString().Trim();
  55. }
  56. //================================================================
  57. //获取分页和排序信息:页大小,页码,排序方式,排序字段
  58. int pageRows, page;
  59. pageRows = 10;
  60. page = 1;
  61. string order, sort, oderby; order = sort = oderby = "";
  62. if (null != context.Request.QueryString["rows"])
  63. {
  64. pageRows = int.Parse(context.Request.QueryString["rows"].ToString().Trim());
  65. }
  66. if (null != context.Request.QueryString["page"])
  67. {
  68. page = int.Parse(context.Request.QueryString["page"].ToString().Trim());
  69. }
  70. if (null != context.Request.QueryString["sort"])
  71. {
  72. order = context.Request.QueryString["sort"].ToString().Trim();
  73. }
  74. if (null != context.Request.QueryString["order"])
  75. {
  76. sort = context.Request.QueryString["order"].ToString().Trim();
  77. }
  78. //===================================================================
  79. //组合查询语句:条件+排序
  80. StringBuilder strWhere = new StringBuilder();
  81. if (AdminName != "")
  82. {
  83. strWhere.AppendFormat(" WorkerRealName like '%{0}%' and ", AdminName);
  84. }
  85. if (QuanXian  != "")
  86. {
  87. strWhere.AppendFormat(" AdminRightName like '%{0}%' and ", QuanXian);
  88. }
  89. if (startTime != "")
  90. {
  91. strWhere.AppendFormat(" ActiveDate >= '{0}' and ", startTime);
  92. }
  93. if (endTime != "")
  94. {
  95. strWhere.AppendFormat(" ActiveDate <= '{0}' and ", endTime);
  96. }
  97. //删除多余的and
  98. int startindex = strWhere.ToString().LastIndexOf("and");//获取最后一个and的位置
  99. if (startindex >= 0)
  100. {
  101. strWhere.Remove(startindex, 3);//删除多余的and关键字
  102. }
  103. if (sort != "" && order != "")
  104. {
  105. //strWhere.AppendFormat(" order by {0} {1}", sort, order);//添加排序
  106. oderby = order + " " + sort;
  107. }
  108. //DataSet ds = Bnotice.GetList(strWhere.ToString());  //调用不分页的getlist
  109. //调用分页的GetList方法
  110. DataSet ds = admininfobll.GetListByPage(strWhere.ToString(), oderby, (page - 1) * pageRows + 1, page * pageRows);
  111. int count = admininfobll.GetRecordCount(strWhere.ToString());//获取条数
  112. string strJson = ToJson.Dataset2Json(ds, count);//DataSet数据转化为Json数据
  113. context.Response.Write(strJson);//返回给前台页面
  114. context.Response.End();
  115. }
  116. }

注:不知道前台页面怎么接收数据,请看第一篇博文:基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)

调用D层实现分页的两个方法:

  1. /// <summary>
  2. /// 获取记录总数
  3. /// </summary>
  4. public int GetRecordCount(string strWhere)
  5. {
  6. StringBuilder strSql=new StringBuilder();
  7. strSql.Append("select count(1) FROM V_admin_MgPersonFiles ");
  8. if(strWhere.Trim()!="")
  9. {
  10. strSql.Append(" where "+strWhere);
  11. }
  12. object obj = DbHelperSQL.GetSingle(strSql.ToString());
  13. if (obj == null)
  14. {
  15. return 0;
  16. }
  17. else
  18. {
  19. return Convert.ToInt32(obj);
  20. }
  21. }
  22. /// <summary>
  23. /// 分页获取数据列表
  24. /// </summary>
  25. public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
  26. {
  27. StringBuilder strSql=new StringBuilder();
  28. strSql.Append("SELECT * FROM ( ");
  29. strSql.Append(" SELECT ROW_NUMBER() OVER (");
  30. if (!string.IsNullOrEmpty(orderby.Trim()))
  31. {
  32. strSql.Append("order by T." + orderby );
  33. }
  34. else
  35. {
  36. strSql.Append("order by T.AdminID desc");
  37. }
  38. strSql.Append(")AS Row, T.*  from V_admin_MgPersonFiles T ");
  39. if (!string.IsNullOrEmpty(strWhere.Trim()))
  40. {
  41. strSql.Append(" WHERE " + strWhere);
  42. }
  43. strSql.Append(" ) TT");
  44. strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
  45. return DbHelperSQL.Query(strSql.ToString());
  46. }

上面还有一个难点是:将dataset的数据集转换成json格式,下面我封装了一个类:ToJson

  1. public class ToJson
  2. {
  3. #region DataSet转换成Json格式
  4. /// <summary>
  5. /// DataSet转换成Json格式
  6. /// </summary>
  7. /// <param name="ds">DataSet</param>
  8. /// <returns></returns>
  9. public static string Dataset2Json(DataSet ds, int total = -1)
  10. {
  11. StringBuilder json = new StringBuilder();
  12. foreach (DataTable dt in ds.Tables)
  13. {
  14. //{"total":5,"rows":[
  15. json.Append("{\"total\":");
  16. if (total == -1)
  17. {
  18. json.Append(dt.Rows.Count);
  19. }
  20. else
  21. {
  22. json.Append(total);
  23. }
  24. json.Append(",\"rows\":[");
  25. json.Append(DataTable2Json(dt));
  26. json.Append("]}");
  27. } return json.ToString();
  28. }
  29. #endregion
  30. #region dataTable转换成Json格式
  31. /// <summary>
  32. /// dataTable转换成Json格式
  33. /// </summary>
  34. /// <param name="dt"></param>
  35. /// <returns></returns>
  36. public static string DataTable2Json(DataTable dt)
  37. {
  38. StringBuilder jsonBuilder = new StringBuilder();
  39. for (int i = 0; i < dt.Rows.Count; i++)
  40. {
  41. jsonBuilder.Append("{");
  42. for (int j = 0; j < dt.Columns.Count; j++)
  43. {
  44. jsonBuilder.Append("\"");
  45. jsonBuilder.Append(dt.Columns[j].ColumnName);
  46. jsonBuilder.Append("\":\"");
  47. jsonBuilder.Append(dt.Rows[i][j].ToString());
  48. jsonBuilder.Append("\",");
  49. }
  50. if (dt.Columns.Count > 0)
  51. {
  52. jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  53. }
  54. jsonBuilder.Append("},");
  55. }
  56. if (dt.Rows.Count > 0)
  57. {
  58. jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
  59. }
  60. return jsonBuilder.ToString();
  61. }
  62. #endregion dataTable转换成Json格式
  63. }

这篇博客主要给大家介绍datagrid如何实现分页和搜索的功能。真的跟宣传广告一样,It's so easy。。。

========================================================================================================================

基于asp.net+easyui框架的系列博文:

使用Jquery+EasyUI框架开发项目+下载+帮助--EasyUI的简介

Asp.net之真假分页大揭秘、使用AspNetPager实现真分页

Asp.net前端页面开发总结

Asp.net 一般处理程序+扩展

Asp.Net构架(Http请求处理流程)、Asp.Net 构架(Http Handler 介绍)、Asp.Net 构架(HttpModule 介绍)

基于asp.net + easyui框架,js实现上传图片之前判断图片格式,同时实现预览,兼容各种浏览器+下载

基于asp.net+ easyui框架,js提交图片,实现先上传图片再提交表单

基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现添加、编辑、删除(三)

基于asp.net + easyui框架,一步步学习easyui-datagrid——完成,总结(四)

=========================================================================================================================

对于json:不知道怎么传值?不知道返回什么样值?不知道如何拼接json串的童鞋有福了,给大家推荐一篇文章:

http://blog.csdn.net/gxq741718618/article/details/41130509

基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)的更多相关文章

  1. Unity容器的简单AOP与DI的应用Demo(基于asp.net mvc框架)

    转发请注明出处:https://home.cnblogs.com/u/zhiyong-ITNote/ 整个Demo是基于Controller-Service-Repository架构设计的,每一层之间 ...

  2. 基于asp.net+MINIUI的项目----在线学习系统

    1 数据库列的自动计算: 描述:一张选课表,其中有学习的开始时间和结束时间,一个列用来计算学习的总时间(小时) 解决:选择该列 属性:计算列规范:公式:(datediff(hour,[StartTim ...

  3. 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)

    首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考  上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...

  4. 一步步学习 Spring Data 系列之JPA(二)

    继上一篇文章对Spring Data JPA更深( )一步剖析. 上一篇只是简单的介绍了Spring Data JPA的简单使用,而往往在项目中这一点功能并不能满足我们的需求.这是当然的,在业务中查询 ...

  5. EasyUI学习笔记---Datagrid真分页

    EasyUI Datagrid组件在我看来功能还是很强大的,在我使用过程中遇到分页请求的问题困扰了一天才解决,下面我就把我遇到的问题分享一下 //datagrid数据表格渲染 $("#dg& ...

  6. 专业5 laravel框架添加,删除,恢复,分页,搜索接口

    //////////////////////资源路由 //商品资源路由恢复Route::get('/restore/{id}','goodController@restore');//商品资源路由添加 ...

  7. JQuery EasyUI框架学习

    前言 新项目的开发前端技术打算採用EasyUI框架(基于EasyUI较为丰富的UI组件库),项目组长将前端EasyUI这块的任务分配给了我.在进行开发之前,须要我这菜鸟对EasyUI框架进行一些基础的 ...

  8. 一步步学习ASP.NET MVC3 章节总结

    请注明转载地址:http://www.cnblogs.com/arhat 对于<一步步学习ASP.NET MVC3>系列工15章,那么为了方便大家能够快速的预览,老魏在这里为这个系列提供一 ...

  9. easyui框架--基础篇(一)-->数据表格datagrid(php与mysql交互)

      前  言  php  easyui框架--本篇学习主要是 easyui中的datagrid(数据表格)框架. 本篇学习主要通过讲解一段代码加GIF图片学习datagrid(数据表格)中的一些常用属 ...

随机推荐

  1. 使用HibernateDaoSupport抽取BaseDao

            在开发采用Struts2+Spring+hibernate这三大框架的项目时,我们需要一个抽取一个BaseDao.这个Dao里面CRUD都给封装好,后续的其他Dao直接用它的功能就可以 ...

  2. vue-cli 动态绑定图片失败

    1.template 中引用图片,第一个为固定路径,第二个为动态绑定路径 eg: <img src="XXXXXX.png" alt=""> < ...

  3. Luogu P1484 种树

    这道题目还是比较简单的 首先题目的意思就让我们很轻易地想到DP 我们设f[i][j]表示前i个坑中种j棵树的最大利益,则有: f[i][j]=max(f[i-1][j],f[i-2][j-1]+a[i ...

  4. java maven项目迁移时缺失jar包 或者 maven jar包缺失时的解决方案

    这样弄完,jar包就都下载好了,就不缺失了. 从GitHub上checkout一个项目下来,导入idea后发现加载依赖奇慢无比,所以临时把网络调成FQ的代理,结果会发现idea会停止之前的下载,那怎么 ...

  5. [APIO2013]机器人[搜索、斯坦纳树]

    题意 题目链接 分析 记 g(d,x,y) 表示从 (x,y) 出发,方向为 d 到达的点,这个可以通过记忆化搜索求出,注意如果转移成环(此时向这个方向走没有意义)要特判. 记 f(l,r,x,y) ...

  6. Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries

    目录 上篇回顾 Building Queries 匹配所有的查询 全文查询 Full Text Queries 什么是全文查询? Match 全文查询 API 列表 基于词项的查询 Term Term ...

  7. FME Cloud 账号申请流程

    第一步,访问SAFE的FME Cloud注册页,官网明确表态,如果你是一个新的FME Cloud用户,你可以免费获得一个初级版.地址:https://console.fmecloud.safe.com ...

  8. OPENSTACK重装系统失败导致虚拟机状态为error

    重装系统失败导致虚拟机状态为error DASHBOARD查看虚拟机状态: 查看日志: 磁盘不足导致下载新镜像失败. Virsh list -all 无法发现虚拟机,底层盘消失(因为重装系统时nova ...

  9. OD之破解密钥文件授权(三)

    除了上次的序列号验证以外,还有这种密钥授权模式,需要密钥文件授权才能打开文件; 老办法,先拖进OD中动态分析再说: 然后F8进行调试这时候发现了一个条件跳转函数jnz下面是说跳转未实现,那我们发现上面 ...

  10. linux重启tomcat的shell脚本

    基本思路: 先检查待重启的tomcat的进程是否存在 存在则执行shutdown. 然后再次检查进程是否还存在,不存在则执行kill 然后删除工作空间及10天前的日志. 最后执行启动. #!/bin/ ...