zoukankan      html  css  js  c++  java
  • 基于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代码

    [javascript] view plaincopyprint?
     
    1. //获取参数       
    2.  function getQueryParams(queryParams) {  
    3.      var StartTime = $("#StartTime").datebox("getValue");  
    4.      var EndTime = $("#EndTime").datebox("getValue");               
    5.      var AdminName = document.getElementById("AdminName").value;  
    6.      var QuanXian = document.getElementById("quanxian").value;  
    7.   
    8.      //$("#quanxian").combobox("getValue");  
    9.   
    10.      queryParams.StartTime = StartTime;  
    11.      queryParams.EndTime = EndTime;  
    12.      queryParams.AdminName = AdminName;  
    13.      queryParams.QuanXian = QuanXian;  
    14.   
    15.      return queryParams;  
    16.    
    17.  }  
    18.     //增加查询参数,重新加载表格  
    19.     function reloadgrid() {  
    20.   
    21.         //查询参数直接添加在queryParams中      
    22.         var queryParams = $('#tt').datagrid('options').queryParams;  
    23.         getQueryParams(queryParams);  
    24.         $('#tt').datagrid('options').queryParams = queryParams;  
    25.         $("#tt").datagrid('reload');  
    26.   
    27.     }  

    一般处理程序SetAdmin.ashx

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. using System;  
    2. using System.Collections.Generic;  
    3. using System.Linq;  
    4. using System.Web;  
    5. using System.Data;  
    6. using System.Text;  
    7.   
    8. namespace GoodCommunitySystem.admin.UserManager  
    9. {  
    10.     /// <summary>  
    11.     /// SetAdmin 的摘要说明  
    12.     /// </summary>  
    13.     public class SetAdmin : IHttpHandler  
    14.     {  
    15.         BLL.adminInfoBLL admininfobll = new BLL.adminInfoBLL();  
    16.         Entity.adminInfoEntity enadmininfo = new Entity.adminInfoEntity();  
    17.   
    18.         public void ProcessRequest(HttpContext context)  
    19.         {  
    20.              
    21.             //调用查询方法  
    22.             Query(context);  
    23.               
    24.         }  
    25.   
    26.         public bool IsReusable  
    27.         {  
    28.             get  
    29.             {  
    30.                 return false;  
    31.             }  
    32.         }  
    33.         /// <summary>  
    34.         /// 查询记录  
    35.         /// </summary>  
    36.         /// <param name="context"></param>  
    37.         public void Query(HttpContext context)  
    38.         {  
    39.   
    40.   
    41.             context.Response.ContentType = "text/plain";  
    42.             //===============================================================  
    43.             //获取查询条件:【用户id,开始时间,结束时间,关键字】  
    44.             string AdminName, startTime, endTime, QuanXian;  
    45.             AdminName = startTime = endTime = QuanXian = "";  
    46.             //获取前台传来的值  
    47.             if (null != context.Request.QueryString["AdminName"])  
    48.             {//获取前台传来的值  
    49.                 AdminName = context.Request.QueryString["AdminName"].ToString().Trim();  
    50.             }  
    51.             if (null != context.Request.QueryString["StartTime"])  
    52.             {  
    53.                 startTime = context.Request.QueryString["StartTime"].ToString().Trim();  
    54.             }  
    55.             if (null != context.Request.QueryString["EndTime"])  
    56.             {  
    57.                 endTime = context.Request.QueryString["EndTime"].ToString().Trim();  
    58.             }  
    59.             if (null != context.Request.QueryString["QuanXian"])  
    60.             {  
    61.                 QuanXian = context.Request.QueryString["QuanXian"].ToString().Trim();  
    62.             }  
    63.   
    64.             //================================================================  
    65.             //获取分页和排序信息:页大小,页码,排序方式,排序字段  
    66.             int pageRows, page;  
    67.             pageRows = 10;  
    68.             page = 1;  
    69.             string order, sort, oderby; order = sort = oderby = "";  
    70.             if (null != context.Request.QueryString["rows"])  
    71.             {  
    72.                 pageRows = int.Parse(context.Request.QueryString["rows"].ToString().Trim());  
    73.   
    74.             }  
    75.             if (null != context.Request.QueryString["page"])  
    76.             {  
    77.   
    78.                 page = int.Parse(context.Request.QueryString["page"].ToString().Trim());  
    79.   
    80.             }  
    81.             if (null != context.Request.QueryString["sort"])  
    82.             {  
    83.   
    84.                 order = context.Request.QueryString["sort"].ToString().Trim();  
    85.   
    86.             }  
    87.             if (null != context.Request.QueryString["order"])  
    88.             {  
    89.   
    90.                 sort = context.Request.QueryString["order"].ToString().Trim();  
    91.   
    92.             }  
    93.   
    94.   
    95.             //===================================================================  
    96.             //组合查询语句:条件+排序  
    97.             StringBuilder strWhere = new StringBuilder();  
    98.             if (AdminName != "")  
    99.             {  
    100.                 strWhere.AppendFormat(" WorkerRealName like '%{0}%' and ", AdminName);  
    101.             }  
    102.             if (QuanXian  != "")  
    103.             {  
    104.                 strWhere.AppendFormat(" AdminRightName like '%{0}%' and ", QuanXian);  
    105.             }  
    106.             if (startTime != "")  
    107.             {  
    108.                 strWhere.AppendFormat(" ActiveDate >= '{0}' and ", startTime);  
    109.             }  
    110.             if (endTime != "")  
    111.             {  
    112.                 strWhere.AppendFormat(" ActiveDate <= '{0}' and ", endTime);  
    113.             }  
    114.   
    115.             //删除多余的and  
    116.             int startindex = strWhere.ToString().LastIndexOf("and");//获取最后一个and的位置  
    117.             if (startindex >= 0)  
    118.             {  
    119.                 strWhere.Remove(startindex, 3);//删除多余的and关键字  
    120.             }  
    121.             if (sort != "" && order != "")  
    122.             {  
    123.                 //strWhere.AppendFormat(" order by {0} {1}", sort, order);//添加排序  
    124.                 oderby = order + " " + sort;  
    125.             }  
    126.             //DataSet ds = Bnotice.GetList(strWhere.ToString());  //调用不分页的getlist  
    127.   
    128.             //调用分页的GetList方法  
    129.             DataSet ds = admininfobll.GetListByPage(strWhere.ToString(), oderby, (page - 1) * pageRows + 1, page * pageRows);  
    130.             int count = admininfobll.GetRecordCount(strWhere.ToString());//获取条数  
    131.             string strJson = ToJson.Dataset2Json(ds, count);//DataSet数据转化为Json数据  
    132.             context.Response.Write(strJson);//返回给前台页面  
    133.             context.Response.End();  
    134.   
    135.         }  
    136. }  

    注:不知道前台页面怎么接收数据,请看第一篇博文:基于asp.net + easyui框架,一步步学习easyui-datagrid——界面(一)

    调用D层实现分页的两个方法:

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1.               /// <summary>  
    2. /// 获取记录总数  
    3. /// </summary>  
    4. public int GetRecordCount(string strWhere)  
    5. {  
    6.     StringBuilder strSql=new StringBuilder();  
    7.           strSql.Append("select count(1) FROM V_admin_MgPersonFiles ");  
    8.     if(strWhere.Trim()!="")  
    9.     {  
    10.         strSql.Append(" where "+strWhere);  
    11.     }  
    12.     object obj = DbHelperSQL.GetSingle(strSql.ToString());  
    13.     if (obj == null)  
    14.     {  
    15.         return 0;  
    16.     }  
    17.     else  
    18.     {  
    19.         return Convert.ToInt32(obj);  
    20.     }  
    21. }  
    22. /// <summary>  
    23. /// 分页获取数据列表  
    24. /// </summary>  
    25. public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)  
    26. {  
    27.     StringBuilder strSql=new StringBuilder();  
    28.     strSql.Append("SELECT * FROM ( ");  
    29.     strSql.Append(" SELECT ROW_NUMBER() OVER (");  
    30.     if (!string.IsNullOrEmpty(orderby.Trim()))  
    31.     {  
    32.         strSql.Append("order by T." + orderby );  
    33.     }  
    34.     else  
    35.     {  
    36.         strSql.Append("order by T.AdminID desc");  
    37.     }  
    38.           strSql.Append(")AS Row, T.*  from V_admin_MgPersonFiles T ");  
    39.     if (!string.IsNullOrEmpty(strWhere.Trim()))  
    40.     {  
    41.         strSql.Append(" WHERE " + strWhere);  
    42.     }  
    43.     strSql.Append(" ) TT");  
    44.     strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);  
    45.     return DbHelperSQL.Query(strSql.ToString());  
    46. }  

          上面还有一个难点是:将dataset的数据集转换成json格式,下面我封装了一个类:ToJson

    [csharp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
     
    1. public class ToJson  
    2.     {  
    3.  
    4.         #region DataSet转换成Json格式  
    5.         /// <summary>  
    6.         /// DataSet转换成Json格式    
    7.         /// </summary>    
    8.         /// <param name="ds">DataSet</param>   
    9.         /// <returns></returns>    
    10.         public static string Dataset2Json(DataSet ds, int total = -1)  
    11.         {  
    12.             StringBuilder json = new StringBuilder();  
    13.   
    14.             foreach (DataTable dt in ds.Tables)  
    15.             {  
    16.                 //{"total":5,"rows":[  
    17.                 json.Append("{"total":");  
    18.                 if (total == -1)  
    19.                 {  
    20.                     json.Append(dt.Rows.Count);  
    21.                 }  
    22.                 else  
    23.                 {  
    24.                     json.Append(total);  
    25.                 }  
    26.                 json.Append(","rows":[");  
    27.                 json.Append(DataTable2Json(dt));  
    28.                 json.Append("]}");  
    29.             } return json.ToString();  
    30.         }  
    31.         #endregion  
    32.  
    33.         #region dataTable转换成Json格式  
    34.         /// <summary>    
    35.         /// dataTable转换成Json格式    
    36.         /// </summary>    
    37.         /// <param name="dt"></param>    
    38.         /// <returns></returns>    
    39.         public static string DataTable2Json(DataTable dt)  
    40.         {  
    41.             StringBuilder jsonBuilder = new StringBuilder();  
    42.   
    43.             for (int i = 0; i < dt.Rows.Count; i++)  
    44.             {  
    45.                 jsonBuilder.Append("{");  
    46.                 for (int j = 0; j < dt.Columns.Count; j++)  
    47.                 {  
    48.                     jsonBuilder.Append(""");  
    49.                     jsonBuilder.Append(dt.Columns[j].ColumnName);  
    50.                     jsonBuilder.Append("":"");  
    51.                     jsonBuilder.Append(dt.Rows[i][j].ToString());  
    52.                     jsonBuilder.Append("",");  
    53.                 }  
    54.                 if (dt.Columns.Count > 0)  
    55.                 {  
    56.                     jsonBuilder.Remove(jsonBuilder.Length - 1, 1);  
    57.                 }  
    58.                 jsonBuilder.Append("},");  
    59.             }  
    60.             if (dt.Rows.Count > 0)  
    61.             {  
    62.                 jsonBuilder.Remove(jsonBuilder.Length - 1, 1);  
    63.             }  
    64.   
    65.             return jsonBuilder.ToString();  
    66.         }  
    67.         #endregion dataTable转换成Json格式  
    68.     }  



              这篇博客主要给大家介绍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

  • 相关阅读:
    20191218《信息安全导论》第十二周总结
    20191218《信息安全导论》第十一周总结
    20191218《信息安全导论》第十周总结
    20191218《信息安全导论》第九周总结
    20191218《信息安全导论》第八周总结
    20191218《信息安全导论》第七周总结
    20191218《信息安全导论》第六周总结
    20191218《信息安全导论》寻找我的黑客偶像
    20191218《信息安全导论》第五周总结
    20191211_获奖感言及学习心得
  • 原文地址:https://www.cnblogs.com/zkwarrior/p/4847360.html
Copyright © 2011-2022 走看看