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

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代码

[javascript] view plaincopyprint?

  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

[csharp] view plaincopyprint?

  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层实现分页的两个方法:

[csharp] view plaincopyprint?

  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

[csharp] view plaincopyprint?

  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

时间: 2024-10-07 12:33:01

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

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

首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼. 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要作为自己的笔记使用,在这里分享给大家. 实现主要流程: 在支付宝 demo 中给出了签名的lib工具库,因为订单需要签名成一个字符串,然后交给支付接口,签名涉及到商户方的私钥,所以将这个签名的过程交给后台去完成,在调用支付宝支付接口前,我们把必要的参数传给后台服务器,然后服务器那边签名好后返回给我们签名后的字符串,我们传给

JQuery EasyUI框架学习

前言 新项目的开发前端技术打算采用EasyUI框架(基于EasyUI较为丰富的UI组件库),项目组长将前端EasyUI这块的任务分配给了我.在进行开发之前,需要我这菜鸟对EasyUI框架进行一些基础的入门学习.之后会在学习的过程中将自己遇到的问题和有用的东西记录下来. 关于EasyUI EasyUI框架式基于JQuery的,使用它帮助我们快捷的构建web网页.EasyUI框架是一个简单.易用.强大的轻量级web前端javascript框架.现阶段来说,在开发web项目时,前端的开发我们更喜欢使用

easyui框架--基础篇(一)--&gt;数据表格datagrid(php与mysql交互)

  前  言  php  easyui框架--本篇学习主要是 easyui中的datagrid(数据表格)框架. 本篇学习主要通过讲解一段代码加GIF图片学习datagrid(数据表格)中的一些常用属性,还有与之相关的dialog(对话窗)和texbobox(文本框)的一些常用属性,希望对读者有帮助. 本篇主要分为两个部分讲解: ① 前端PHP代码编写--框架搭建与数据调用 ② 数据库的数据内容与后台数据连接,后台数据传输到前台 以下所有代码HBuider中建立PHP文件实施.(前提php文件可

C#开发中碰到的问题------easyUI 框架下dialog加载HTML页面不执行js问题

问题描述: easyUI 框架下,使用easyUI dialog加载HTML页面,HTML页面写在头部的js不会执行 解决办法: 将js写在body里 问题原因: 转[https://www.cnblogs.com/summer_adai/p/3548252.html] 原文地址:https://www.cnblogs.com/LiCoco/p/9117103.html

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(0) - 目录概述

概述 博主自毕业后,进公司就一直是以ASP.NET MVC 5.0 + MySQL 进行项目开发,在项目也使用了很多常用功能,如 WCF.SignalR.微信公众号API.支付宝API.Dapper等等,前端是大杂烩,如:Bootstrap.AmazeUI.EasyUI.Light7.WeUI等等.其实对于我们公司的项目来说,技术栈虽说不庞大,但五脏俱全,而且基于这一套技术,开发速度有保证.但是,作为一个有梦想的程序猿,必须与时俱进,因此无意中接触了.Net Core 2.0.听说它是开源的?它

ASP.NET Core框架深度学习(一) Hello World

对于学习Core的框架,对我帮助最大的一篇文章是Artech的<200行代码,7个对象——让你了解ASP.NET Core框架的本质>,最近我又重新阅读了一遍该文.本系列文章就是结合我的阅读心得,一起来搭建一个迷你的Core框架. 本文相关代码在码云上,链接如下 https://gitee.com/qixinbo/MyKestrelServer/tree/master/CoreMini/CoreMini 还有部分是core的源码,链接如下 https://github.com/aspnet/A

学习ASP.NET MVC5框架揭秘笔记-ASP.NET MVC是如何运行的(四)

Action的执行 作为Controller的基类ControllerBase,它的Execute方法主要作用在于执行目标Action方法.如果目标Action方法返回一个ActionResult对象,它还需要执行该对象来对当前请求予以响应.在ASP.NET MVC框架中,两者的执行是通过一个叫做ActionInvoker的对象来完成的. 1.ActionInvoker 我们同样为ActionInvoker定义了一个借口IActionInvoker.如下所示.该接口定义了唯一的方法InvokeA

学习ASP.NET MVC框架揭秘笔记目录

学习ASP.NET MVC框架揭秘笔记目录 第一章     ASP.NET+MVC 1.1传统的MVC模式 持续更新中,,,,

对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识

对Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架的个人认识   初次接触Spring.Net+NHibenate+Asp.Net Mvc+Easyui框架,查阅了相关资料,了解了框架如何使用,以及优缺点,下面的说法可能比较浅显,后续的可能在开发过程中能了解的更深刻一些.说的不对的地方请及时指正. 首先,拿到这个框架的时候,第一个想问的问题是为什么想用这块框架,有什么好处,通过查资料浅显的理解为:为了实现应用的松耦合,通过配置完成对数据业务逻辑的处理,节省开发时