基于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代码
- //获取参数
- function getQueryParams(queryParams) {
- var StartTime = $("#StartTime").datebox("getValue");
- var EndTime = $("#EndTime").datebox("getValue");
- var AdminName = document.getElementById("AdminName").value;
- var QuanXian = document.getElementById("quanxian").value;
- //$("#quanxian").combobox("getValue");
- queryParams.StartTime = StartTime;
- queryParams.EndTime = EndTime;
- queryParams.AdminName = AdminName;
- queryParams.QuanXian = QuanXian;
- return queryParams;
- }
- //增加查询参数,重新加载表格
- function reloadgrid() {
- //查询参数直接添加在queryParams中
- var queryParams = $('#tt').datagrid('options').queryParams;
- getQueryParams(queryParams);
- $('#tt').datagrid('options').queryParams = queryParams;
- $("#tt").datagrid('reload');
- }
一般处理程序SetAdmin.ashx
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Data;
- using System.Text;
- namespace GoodCommunitySystem.admin.UserManager
- {
- /// <summary>
- /// SetAdmin 的摘要说明
- /// </summary>
- public class SetAdmin : IHttpHandler
- {
- BLL.adminInfoBLL admininfobll = new BLL.adminInfoBLL();
- Entity.adminInfoEntity enadmininfo = new Entity.adminInfoEntity();
- public void ProcessRequest(HttpContext context)
- {
- //调用查询方法
- Query(context);
- }
- public bool IsReusable
- {
- get
- {
- return false;
- }
- }
- /// <summary>
- /// 查询记录
- /// </summary>
- /// <param name="context"></param>
- public void Query(HttpContext context)
- {
- context.Response.ContentType = "text/plain";
- //===============================================================
- //获取查询条件:【用户id,开始时间,结束时间,关键字】
- string AdminName, startTime, endTime, QuanXian;
- AdminName = startTime = endTime = QuanXian = "";
- //获取前台传来的值
- if (null != context.Request.QueryString["AdminName"])
- {//获取前台传来的值
- AdminName = context.Request.QueryString["AdminName"].ToString().Trim();
- }
- if (null != context.Request.QueryString["StartTime"])
- {
- startTime = context.Request.QueryString["StartTime"].ToString().Trim();
- }
- if (null != context.Request.QueryString["EndTime"])
- {
- endTime = context.Request.QueryString["EndTime"].ToString().Trim();
- }
- if (null != context.Request.QueryString["QuanXian"])
- {
- QuanXian = context.Request.QueryString["QuanXian"].ToString().Trim();
- }
- //================================================================
- //获取分页和排序信息:页大小,页码,排序方式,排序字段
- int pageRows, page;
- pageRows = 10;
- page = 1;
- string order, sort, oderby; order = sort = oderby = "";
- if (null != context.Request.QueryString["rows"])
- {
- pageRows = int.Parse(context.Request.QueryString["rows"].ToString().Trim());
- }
- if (null != context.Request.QueryString["page"])
- {
- page = int.Parse(context.Request.QueryString["page"].ToString().Trim());
- }
- if (null != context.Request.QueryString["sort"])
- {
- order = context.Request.QueryString["sort"].ToString().Trim();
- }
- if (null != context.Request.QueryString["order"])
- {
- sort = context.Request.QueryString["order"].ToString().Trim();
- }
- //===================================================================
- //组合查询语句:条件+排序
- StringBuilder strWhere = new StringBuilder();
- if (AdminName != "")
- {
- strWhere.AppendFormat(" WorkerRealName like '%{0}%' and ", AdminName);
- }
- if (QuanXian != "")
- {
- strWhere.AppendFormat(" AdminRightName like '%{0}%' and ", QuanXian);
- }
- if (startTime != "")
- {
- strWhere.AppendFormat(" ActiveDate >= '{0}' and ", startTime);
- }
- if (endTime != "")
- {
- strWhere.AppendFormat(" ActiveDate <= '{0}' and ", endTime);
- }
- //删除多余的and
- int startindex = strWhere.ToString().LastIndexOf("and");//获取最后一个and的位置
- if (startindex >= 0)
- {
- strWhere.Remove(startindex, 3);//删除多余的and关键字
- }
- if (sort != "" && order != "")
- {
- //strWhere.AppendFormat(" order by {0} {1}", sort, order);//添加排序
- oderby = order + " " + sort;
- }
- //DataSet ds = Bnotice.GetList(strWhere.ToString()); //调用不分页的getlist
- //调用分页的GetList方法
- DataSet ds = admininfobll.GetListByPage(strWhere.ToString(), oderby, (page - 1) * pageRows + 1, page * pageRows);
- int count = admininfobll.GetRecordCount(strWhere.ToString());//获取条数
- string strJson = ToJson.Dataset2Json(ds, count);//DataSet数据转化为Json数据
- context.Response.Write(strJson);//返回给前台页面
- context.Response.End();
- }
- }
注:不知道前台页面怎么接收数据,请看第一篇博文:基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)
调用D层实现分页的两个方法:
- /// <summary>
- /// 获取记录总数
- /// </summary>
- public int GetRecordCount(string strWhere)
- {
- StringBuilder strSql=new StringBuilder();
- strSql.Append("select count(1) FROM V_admin_MgPersonFiles ");
- if(strWhere.Trim()!="")
- {
- strSql.Append(" where "+strWhere);
- }
- object obj = DbHelperSQL.GetSingle(strSql.ToString());
- if (obj == null)
- {
- return 0;
- }
- else
- {
- return Convert.ToInt32(obj);
- }
- }
- /// <summary>
- /// 分页获取数据列表
- /// </summary>
- public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
- {
- StringBuilder strSql=new StringBuilder();
- strSql.Append("SELECT * FROM ( ");
- strSql.Append(" SELECT ROW_NUMBER() OVER (");
- if (!string.IsNullOrEmpty(orderby.Trim()))
- {
- strSql.Append("order by T." + orderby );
- }
- else
- {
- strSql.Append("order by T.AdminID desc");
- }
- strSql.Append(")AS Row, T.* from V_admin_MgPersonFiles T ");
- if (!string.IsNullOrEmpty(strWhere.Trim()))
- {
- strSql.Append(" WHERE " + strWhere);
- }
- strSql.Append(" ) TT");
- strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
- return DbHelperSQL.Query(strSql.ToString());
- }
上面还有一个难点是:将dataset的数据集转换成json格式,下面我封装了一个类:ToJson
- public class ToJson
- {
- #region DataSet转换成Json格式
- /// <summary>
- /// DataSet转换成Json格式
- /// </summary>
- /// <param name="ds">DataSet</param>
- /// <returns></returns>
- public static string Dataset2Json(DataSet ds, int total = -1)
- {
- StringBuilder json = new StringBuilder();
- foreach (DataTable dt in ds.Tables)
- {
- //{"total":5,"rows":[
- json.Append("{\"total\":");
- if (total == -1)
- {
- json.Append(dt.Rows.Count);
- }
- else
- {
- json.Append(total);
- }
- json.Append(",\"rows\":[");
- json.Append(DataTable2Json(dt));
- json.Append("]}");
- } return json.ToString();
- }
- #endregion
- #region dataTable转换成Json格式
- /// <summary>
- /// dataTable转换成Json格式
- /// </summary>
- /// <param name="dt"></param>
- /// <returns></returns>
- public static string DataTable2Json(DataTable dt)
- {
- StringBuilder jsonBuilder = new StringBuilder();
- for (int i = 0; i < dt.Rows.Count; i++)
- {
- jsonBuilder.Append("{");
- for (int j = 0; j < dt.Columns.Count; j++)
- {
- jsonBuilder.Append("\"");
- jsonBuilder.Append(dt.Columns[j].ColumnName);
- jsonBuilder.Append("\":\"");
- jsonBuilder.Append(dt.Rows[i][j].ToString());
- jsonBuilder.Append("\",");
- }
- if (dt.Columns.Count > 0)
- {
- jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
- }
- jsonBuilder.Append("},");
- }
- if (dt.Rows.Count > 0)
- {
- jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
- }
- return jsonBuilder.ToString();
- }
- #endregion dataTable转换成Json格式
- }
这篇博客主要给大家介绍datagrid如何实现分页和搜索的功能。真的跟宣传广告一样,It's so easy。。。
========================================================================================================================
基于asp.net+easyui框架的系列博文:
使用Jquery+EasyUI框架开发项目+下载+帮助--EasyUI的简介
Asp.net之真假分页大揭秘、使用AspNetPager实现真分页
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——实现分页和搜索(二)的更多相关文章
- Unity容器的简单AOP与DI的应用Demo(基于asp.net mvc框架)
转发请注明出处:https://home.cnblogs.com/u/zhiyong-ITNote/ 整个Demo是基于Controller-Service-Repository架构设计的,每一层之间 ...
- 基于asp.net+MINIUI的项目----在线学习系统
1 数据库列的自动计算: 描述:一张选课表,其中有学习的开始时间和结束时间,一个列用来计算学习的总时间(小时) 解决:选择该列 属性:计算列规范:公式:(datediff(hour,[StartTim ...
- 基于IOS下的支付宝SDK的学习与使用——实现产品支付(二)
首先本篇为作者原创,仅供学习使用,以后会不断完善,精炼.阅读之前请参考 上一篇 上一篇 中详细说明了结合官方支付宝SDK,对工程环境进行的一些配置,实现了支付,本篇重点说明一下,注意事项和原理,主要 ...
- 一步步学习 Spring Data 系列之JPA(二)
继上一篇文章对Spring Data JPA更深( )一步剖析. 上一篇只是简单的介绍了Spring Data JPA的简单使用,而往往在项目中这一点功能并不能满足我们的需求.这是当然的,在业务中查询 ...
- EasyUI学习笔记---Datagrid真分页
EasyUI Datagrid组件在我看来功能还是很强大的,在我使用过程中遇到分页请求的问题困扰了一天才解决,下面我就把我遇到的问题分享一下 //datagrid数据表格渲染 $("#dg& ...
- 专业5 laravel框架添加,删除,恢复,分页,搜索接口
//////////////////////资源路由 //商品资源路由恢复Route::get('/restore/{id}','goodController@restore');//商品资源路由添加 ...
- JQuery EasyUI框架学习
前言 新项目的开发前端技术打算採用EasyUI框架(基于EasyUI较为丰富的UI组件库),项目组长将前端EasyUI这块的任务分配给了我.在进行开发之前,须要我这菜鸟对EasyUI框架进行一些基础的 ...
- 一步步学习ASP.NET MVC3 章节总结
请注明转载地址:http://www.cnblogs.com/arhat 对于<一步步学习ASP.NET MVC3>系列工15章,那么为了方便大家能够快速的预览,老魏在这里为这个系列提供一 ...
- easyui框架--基础篇(一)-->数据表格datagrid(php与mysql交互)
前 言 php easyui框架--本篇学习主要是 easyui中的datagrid(数据表格)框架. 本篇学习主要通过讲解一段代码加GIF图片学习datagrid(数据表格)中的一些常用属 ...
随机推荐
- 2017-2018-2 《网络对抗技术》 20155310 第二周 Exp1 PC平台逆向破解(5)M
2017-2018-2 <网络对抗技术> 20155310 第二周 Exp1 PC平台逆向破解(5)M 一.实践目标 1.1实践介绍 本次实践的对象是一个名为pwn1的linux可执行文件 ...
- WPF之Manipulation
原文:WPF之Manipulation 需求:现,在窗口下有一个StackPanel控件. 1.可以拖动. 2.可以展开及收缩(不仅仅可以拖动还可以点击) 3.窗口向坐标轴一样分四个象限,在不同的区域 ...
- CF 961E Tufurama
JYZdalao上课讲了这道题,觉得很好可做 其实也是一道理解了就水爆了的题目 把题意抽象化,可以发现题目求的满足 i<j a[i]>=j a[j]>=i 的i,j对数.由于i,j顺 ...
- PowerBI开发 第十二篇:钻取
钻取是指沿着层次结构(维度的层次)查看数据,钻取可以变换分析数据的粒度.钻取分为下钻(Drill-down)和上钻(Drill-up),上钻是沿着数据的维度结构向上聚合数据,在更大的粒度上查看数据的统 ...
- TensorFlow 训练MNIST数据集(2)—— 多层神经网络
在我的上一篇随笔中,采用了单层神经网络来对MNIST进行训练,在测试集中只有约90%的正确率.这次换一种神经网络(多层神经网络)来进行训练和测试. 1.获取MNIST数据 MNIST数据集只要一行代码 ...
- Asp.Net_上传文件(ftp、webClient、webService)
第一种:通过FTP来上传文件 首先,在另外一台服务器上设置好FTP服务,并创建好允许上传的用户和密码,然后,在ASP.NET里就可以直接将文件上传到这台 FTP 服务器上了.代码如下: <%@ ...
- JQ_插件开发
在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了. ...
- How to export data from Thermo-Calc 如何从Thermo-calc导出文本数据
记录20180510 问题:如何从thermo-calc导出文本数据供origin绘图? 解决: In Thermo-Calc graphical mode, you can just add a ' ...
- 《Linux内核分析》第二周学习报告
<Linux内核分析>第二周学习报告 ——操作系统是如何工作的 姓名:王玮怡 学号:20135116 第一节 函数调用堆栈 一.三个法宝 二.深入理解函数调用堆栈 三.参数传递与局部变量 ...
- 20135202闫佳歆--week2 一个简单的时间片轮转多道程序内核代码及分析
一个简单的时间片轮转多道程序内核代码及分析 所用代码为课程配套git库中下载得到的. 一.进程的启动 /*出自mymain.c*/ /* start process 0 by task[0] */ p ...