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. 【转载】VS配置路径和宏

    原文路径:http://blog.csdn.net/puttytree/article/details/7838419 在介绍项目配置之前,先说明两点 1. 项目配置中,最好不要使用相对路径,更不要使 ...

  2. Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述

    目录 引言 概要 Query and filter context Match All Query 全文查询 Full text queries 小结 参考文档 引言 虽然之前做过 elasticse ...

  3. SuperSocket.WebSocket.WebSocketServer.Setup无法启动

    新学一词:达克效应.引出一句:"无知要比知识更容易产生自信."-- 查尔斯·达尔文 写在前面 在三亚呆了半个月了,三亚的冬天好热啊,让我回忆起了放暑假时下午百无聊赖的时光 { 一睡 ...

  4. CSS 背景实例

    CSS 背景属性属性 描述background 简写属性,作用是将背景属性设置在一个声明中.background-attachment 背景图像是否固定或者随着页面的其余部分滚动.background ...

  5. 总结com组件问题,随笔记录

    一.从 IClassFactory 为 CLSID 为 {00024500-0000-0000-C000-000000000046} 的 COM 组件创建实例失败,原因是出现以下错误:80010001 ...

  6. package.json 中 npm 依赖包版本前的符号的意义

    版本的格式 major.minor.patch:主版本号.次版本号.修补版本号 patch:修复bug,兼容老版本 minor:新增功能,兼容老版本 major:新增功能,不兼容老版本 version ...

  7. HDU排序水题

    1040水题; These days, I am thinking about a question, how can I get a problem as easy as A+B? It is fa ...

  8. JMeter的下载安装以及运行教程

    一.安装JMeter的必要准备 1.安装JDK JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html ...

  9. java算法面试题

    前言:线上面试题与大家分享,并记录求职道路的酸甜苦辣,特此留念. 李雷和韩梅梅坐前后排,上课想说话怕被老师发现,所以改为传小纸条.为了不被老师发现他们纸条上说的是啥,他们约定了如下方法传递信息:将26 ...

  10. Pi Zero三代版本演化比较

    本文介绍Pi Zero的版本演进. 5美元的Pi Zero一上市即造成轰动! 2015年11月树莓派基金会发表了只有5美元的树莓派计算机:PiZero,且只要购买纸本的第40期MagPi杂志就可以附送 ...