目录:
基于.net + easyui框架,一步步学习easyui-datagrid——界面(一)
基于asp.net + easyui框架,一步步学习easyui-datag...
目录:
基于.net + easyui框架,一步步学习easyui-datagrid——界面(一)
基于asp.net + easyui框架,一步步学习easyui-datagrid——实现分页和搜索(二)
基于asp.net + easyui框架,一步步学习easyui-datagrid——实现添加、编辑、删除(三)
基于asp.net + easyui框架,一步步学习easyui-datagrid——完成,总结(四)
上篇博客我只是将界面的部分完成了,继续上篇博客的内容,这篇博客我们需要将中的记录显示到界面上,并实现数据的分页显示。
曾经我写过分页的博客,分页很简单, 本质区别在于分页时从数据库读取信息的方式:假分页:一次性读取数据;真分页:多次读取数据。datagrid使用的是真分页,将记录从数据库查询出来就行了。
下面我们看一下要实现的界面:
vchl0rvg8kgjpc9wpgo8cd48yni+cjwvcd4kpha+0ruw47smwo2zzndyu2v0qwrtaw4uyxnoedwvcd4kpha+pc9wpgo8chjlignsyxnzpq=="brush:java;">using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.data;
using system.text;
namespace goodcommunitysystem.admin.usermanager
{
///
/// setadmin 的摘要说明
///
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;
}
}
///
/// 查询记录
///
///
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)
{
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();
}
}
调用d层实现分页的两个方法:
///
/// 获取记录总数
///
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);
}
}
///
/// 分页获取数据列表
///
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格式
///
/// dataset转换成json格式
///
/// dataset
///
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格式
///
/// datatable转换成json格式
///
///
///
public static string datatable2json(datatable dt)
{
stringbuilder jsonbuilder = new stringbuilder();
for (int i = 0; i 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。。。
=>