zoukankan      html  css  js  c++  java
  • 多条件搜索分页的实现

      对教材列表进行展示的时候,可以有条件的筛选结果,前台用到的是EasyUI DataGrid,后台接受查询参数,返回结果。

         这里只写成后台,数据访问层中实现的关键代码。

    View Code
      1  /// <summary>
      2         /// 默认下获取分页数据
      3         /// </summary>
      4         /// <param name="pageIndex">当前页码</param>
      5         /// <param name="pageSize">每一页的行数</param>
      6         /// <returns>BookID,BookName,Author,UserName,AcaName,Category,[State],AddDate,LastUpdateTime</returns>
      7         public DataTable GetPagedModel(int pageIndex, int pageSize) 
      8         {
      9             string strOrder = "order by AddDate DESC";
     10             string strSQL = string.Format(@"select * from
     11                 (select BookID,BookName,Author,UserName,AcaName,Category,[State],AddDate,LastUpdateTime,ROW_NUMBER() over({0}) as num from ViewBookInfo where IsDel=0) as tb 
     12                 where num between {1}*({2}-1)+1 and {1}*{2} {0} ", strOrder, pageSize, pageIndex);
     13 
     14             return  SQLHelper.GetDataTable(strSQL);
     15         }
     16 
     17         /// <summary>
     18         /// 含参数的查询
     19         /// </summary>
     20         /// <param name="pageIndex"></param>
     21         /// <param name="pageSize"></param>
     22         /// <param name="paras">BookName、ClassName、DeptID、DeptPID、Category、[State]</param>
     23         /// <returns>BookID,BookName,Author,UserName,AcaName,Category,[State],AddDate,LastUpdateTime</returns>
     24         public DataTable GetPagedModel(int pageIndex, int pageSize, Hashtable ht) 
     25         {
     26             string strCondition;
     27             List<SqlParameter> parasList;
     28             string sOrder=" order by AddDate DESC";
     29 
     30             //获取参数
     31             GetSearchCondition(ht,out strCondition,out parasList);
     32 
     33             string strSQL = string.Format(@"select * from (select BookID,BookName,Author,UserName,AcaName,Category,[State],AddDate,LastUpdateTime,ROW_NUMBER() over({0}) as num from ViewBookInfo where IsDel=0 {3}) as tb 
     34                 where num between {1}*({2}-1)+1 and {1}*{2} {0} ", sOrder , pageSize, pageIndex,strCondition);
     35 
     36             return SQLHelper.GetDataTable(strSQL,parasList.ToArray());
     37 
     38         }
     39 
     40         /// <summary>
     41         /// 获取详细信息
     42         /// </summary>
     43         /// <param name="BookID"></param>
     44         /// <returns></returns>
     45         public DataTable GetDetail(int BookID) 
     46         {
     47             string strSQL = "select ClassTarget,BookFeature from BookInfo where BookID="+BookID;
     48 
     49             return SQLHelper.GetDataTable(strSQL);
     50         }
     51         /// <summary>
     52         /// 含参数记录的条数
     53         /// </summary>
     54         /// <param name="ht">BookName、ClassName、DeptID、DeptPID、Category、[State]</param>
     55         /// <returns></returns>
     56         public int GetRecordCount(Hashtable ht) 
     57         {
     58             string strCondition;
     59             List<SqlParameter> parasList;
     60 
     61             //获取参数
     62             GetSearchCondition(ht, out strCondition, out parasList);
     63 
     64             string strSQL = string.Format("select count(0) from ViewBookInfo where IsDel=0 {0} ", strCondition);
     65 
     66             return Convert.ToInt32(SQLHelper.ExecuteScalar(strSQL, parasList.ToArray()));
     67         }
     68 
     69         /// <summary>
     70         /// 装配查询参数,获取查询要的字符串,和参数集合
     71         /// </summary>
     72         /// <param name="ht">BookName、ClassName、DeptID、DeptPID、Category、[State]</param>
     73         /// <param name="sOrder"></param>
     74         /// <param name="paras"></param>
     75         private void GetSearchCondition(Hashtable ht, out string contString, out List<SqlParameter> paras) 
     76         {
     77             StringBuilder sOrder = new StringBuilder();
     78             paras=new List<SqlParameter>();
     79 
     80             if (ht.Count == 0) 
     81             {
     82                 contString = "";
     83                 return;
     84             }
     85 
     86             object oBookName = ht["BookName"];
     87             object oClassName = ht["ClassName"];
     88             object oDeptID = ht["DeptID"];
     89             object oDeptPID = ht["DeptPID"];
     90             object oCategory = ht["Category"];
     91             object oState = ht["State"];
     92 
     93             //书名
     94             if (oBookName != null && !string.IsNullOrEmpty(oBookName.ToString()))
     95             {
     96                 sOrder.Append(" and BookName like @BookName or  BookPY like @BookName");
     97                 paras.Add(new SqlParameter("@BookName",oBookName.ToString()+"%"));
     98             }
     99             //课程名
    100             if(oClassName!=null&&!string.IsNullOrEmpty(oClassName.ToString()))
    101             {
    102                 sOrder.Append(" and  ClassName like @ClassName ");
    103                 paras.Add(new SqlParameter("@ClassName",oClassName.ToString()+"%"));
    104             }
    105             //部门ID
    106             if (oDeptID != null && !string.IsNullOrEmpty(oDeptID.ToString())) 
    107             {
    108                 sOrder.Append(" and DeptID=@DeptID ");
    109                 paras.Add(new SqlParameter("@DeptID",Convert.ToInt32(oDeptID)));
    110             }
    111 
    112             //上级部门PID
    113             if (oDeptPID != null && !string.IsNullOrEmpty(oDeptPID.ToString())) 
    114             {
    115                 sOrder.Append(" and DeptPID=@DeptPID ");
    116                 paras.Add(new SqlParameter("@DeptPID",Convert.ToInt32(oDeptPID)));
    117             }
    118 
    119             //种类Category
    120             if (oCategory != null && !string.IsNullOrEmpty(oCategory.ToString())) 
    121             {
    122                 sOrder.Append(" and Category=@Category ");
    123                 paras.Add(new SqlParameter("@Category",oCategory.ToString()));
    124             }
    125 
    126             //状态State
    127             if (oState != null && !string.IsNullOrEmpty(oState.ToString())) 
    128             {
    129                 sOrder.Append(" and [State]=@State ");
    130                 paras.Add(new SqlParameter("@State",oState.ToString()));
    131             }
    132 
    133             contString = sOrder.ToString();
    134             
    135         }

      条件查询中Hashtable存储的是筛选的字段和其对应的值。

  • 相关阅读:
    自定义类型转换器之TypeConverter
    python测试工具nosetests
    算法练习之相同的树,对称二叉树
    算法练习之x的平方根,爬楼梯,删除排序链表中的重复元素, 合并两个有序数组
    算法练习之报数, 最大子序和,最后一个单词的长度,加一,二进制求和
    java.sql.SQLException: Zero date value prohibited
    java打包小记
    修改jar的.class文件,并重新打包
    算法练习之合并两个有序链表, 删除排序数组中的重复项,移除元素,实现strStr(),搜索插入位置,无重复字符的最长子串
    解决GitHub访问速度慢的问题
  • 原文地址:https://www.cnblogs.com/dedeyi/p/2957790.html
Copyright © 2011-2022 走看看