`

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

阅读更多

目录:

基于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前端页面开发总结

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

 

 

分享到:
评论

相关推荐

    easy ui datagrid 增删改查+分页 asp.net

    数据库管理系统,不管是桌面版,还是网页版,我觉得最重要的功能是:增删改查+分页。文档里面的例子就是asp.net web form + easy ui 的datagrid。简单的演示了这五个重要功能。请用vs2010运行,数据库没有给出。

    C#基于MVC+EasyUI+ECharts后台管理系统完整源码(1.0.6)

    (例子涉及两张表(用户表+权限表),datagrid分页有两种方式,请参考 UserInfoDAL.cs页面方法: getPage2005和getPage2012 ) EasyUI 1.5中文版文档下载地址:http://download.csdn.net/detail/jx_521/9647628

    easyui-datagrid&&easyui-tree实例

    本资源主要是使用easyui控件,并结合ASP。net实现datagrid与数据库的连接,数据的增,删,改,分页操作,完成tree加载数据库数据,希望对开发初学者有所帮助

    Easy Ui datagrid分页

    asp.net Easy Ui datagird分页

    让Asp.NET的DataGrid可排序、可选择、可分页

    DataGrid是Asp.NET中的一个重要的控件,经常我们都将DataGrid做成可分页的和可排序的,有时还需要加上选择功能。这些都是经常需要用到的方法,其实是比较简单的。 设计思路: 为了方便起见,我们连接SQL Server ...

    jquery easyui datagrid实现增加,修改,删除方法总结

    主要介绍了jquery easyui datagrid实现增加,修改,删除方法,结合实例形式分析了jquery easyui datagrid结合asp.net实现数据的增删改等操作的步骤与相关技巧,需要的朋友可以参考下

    DataGrid同时具有分页和排序功能及注意点

    当DataGrid同时具有分页和排序功能时应注意在重新绑定数据源时,MyDataGrid.CurrentPageIndex=0;下面给实现以上功能的原码,也就不多缀了aspx中包含有DataGrid和控制其数据源变化的dropdownlistDataGrid代码 &lt;...

    导出excel.zip

    easyui datagrid 带分页的所有数据导出Excel。两种方法将easyui datagrid 中的数据导出到Excel中。

    一句话轻松搞定asp.net分页

    这里我使用的是easyui datagrid进行接收和传参。这是大体的思路。 string sql = “select top ” + rows + ” * from TestData where testID not in(select top ” + (_rows * (_page – 1)) + ” test

    GoodProject Maven Webapp.zip

    Easyui:jQuery EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有深入的了解,...

Global site tag (gtag.js) - Google Analytics