欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-11-28 11:31:25
目录: 基于.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使用的是真分页,将记录从数据库查询出来就行了。

下面我们看一下要实现的界面:

基于asp.net + easyui框架,一步步学习easyui-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。。。


=>