目录:
基于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复制 //获取参数
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
代码语言:javascript复制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层实现分页的两个方法:
代码语言:javascript复制 /// <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
代码语言:javascript复制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前端页面开发总结
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