多条件搜索分页的实现
2013-03-13 15:58
507 查看
对教材列表进行展示的时候,可以有条件的筛选结果,前台用到的是EasyUI DataGrid,后台接受查询参数,返回结果。
这里只写成后台,数据访问层中实现的关键代码。
View Code
条件查询中Hashtable存储的是筛选的字段和其对应的值。
这里只写成后台,数据访问层中实现的关键代码。
View Code
/// <summary> /// 默认下获取分页数据 /// </summary> /// <param name="pageIndex">当前页码</param> /// <param name="pageSize">每一页的行数</param> /// <returns>BookID,BookName,Author,UserName,AcaName,Category,[State],AddDate,LastUpdateTime</returns> public DataTable GetPagedModel(int pageIndex, int pageSize) { string strOrder = "order by AddDate DESC"; 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) as tb where num between {1}*({2}-1)+1 and {1}*{2} {0} ", strOrder, pageSize, pageIndex); return SQLHelper.GetDataTable(strSQL); } /// <summary> /// 含参数的查询 /// </summary> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="paras">BookName、ClassName、DeptID、DeptPID、Category、[State]</param> /// <returns>BookID,BookName,Author,UserName,AcaName,Category,[State],AddDate,LastUpdateTime</returns> public DataTable GetPagedModel(int pageIndex, int pageSize, Hashtable ht) { string strCondition; List<SqlParameter> parasList; string sOrder=" order by AddDate DESC"; //获取参数 GetSearchCondition(ht,out strCondition,out parasList); 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 where num between {1}*({2}-1)+1 and {1}*{2} {0} ", sOrder , pageSize, pageIndex,strCondition); return SQLHelper.GetDataTable(strSQL,parasList.ToArray()); } /// <summary> /// 获取详细信息 /// </summary> /// <param name="BookID"></param> /// <returns></returns> public DataTable GetDetail(int BookID) { string strSQL = "select ClassTarget,BookFeature from BookInfo where BookID="+BookID; return SQLHelper.GetDataTable(strSQL); } /// <summary> /// 含参数记录的条数 /// </summary> /// <param name="ht">BookName、ClassName、DeptID、DeptPID、Category、[State]</param> /// <returns></returns> public int GetRecordCount(Hashtable ht) { string strCondition; List<SqlParameter> parasList; //获取参数 GetSearchCondition(ht, out strCondition, out parasList); string strSQL = string.Format("select count(0) from ViewBookInfo where IsDel=0 {0} ", strCondition); return Convert.ToInt32(SQLHelper.ExecuteScalar(strSQL, parasList.ToArray())); } /// <summary> /// 装配查询参数,获取查询要的字符串,和参数集合 /// </summary> /// <param name="ht">BookName、ClassName、DeptID、DeptPID、Category、[State]</param> /// <param name="sOrder"></param> /// <param name="paras"></param> private void GetSearchCondition(Hashtable ht, out string contString, out List<SqlParameter> paras) { StringBuilder sOrder = new StringBuilder(); paras=new List<SqlParameter>(); if (ht.Count == 0) { contString = ""; return; } object oBookName = ht["BookName"]; object oClassName = ht["ClassName"]; object oDeptID = ht["DeptID"]; object oDeptPID = ht["DeptPID"]; object oCategory = ht["Category"]; object oState = ht["State"]; //书名 if (oBookName != null && !string.IsNullOrEmpty(oBookName.ToString())) { sOrder.Append(" and BookName like @BookName or BookPY like @BookName"); paras.Add(new SqlParameter("@BookName",oBookName.ToString()+"%")); } //课程名 if(oClassName!=null&&!string.IsNullOrEmpty(oClassName.ToString())) { sOrder.Append(" and ClassName like @ClassName "); paras.Add(new SqlParameter("@ClassName",oClassName.ToString()+"%")); } //部门ID if (oDeptID != null && !string.IsNullOrEmpty(oDeptID.ToString())) { sOrder.Append(" and DeptID=@DeptID "); paras.Add(new SqlParameter("@DeptID",Convert.ToInt32(oDeptID))); } //上级部门PID if (oDeptPID != null && !string.IsNullOrEmpty(oDeptPID.ToString())) { sOrder.Append(" and DeptPID=@DeptPID "); paras.Add(new SqlParameter("@DeptPID",Convert.ToInt32(oDeptPID))); } //种类Category if (oCategory != null && !string.IsNullOrEmpty(oCategory.ToString())) { sOrder.Append(" and Category=@Category "); paras.Add(new SqlParameter("@Category",oCategory.ToString())); } //状态State if (oState != null && !string.IsNullOrEmpty(oState.ToString())) { sOrder.Append(" and [State]=@State "); paras.Add(new SqlParameter("@State",oState.ToString())); } contString = sOrder.ToString(); }
条件查询中Hashtable存储的是筛选的字段和其对应的值。
相关文章推荐
- TP搜索,分页(保留搜索条件)简单实现
- Vue.js实现多条件筛选、搜索、排序及分页的表格功能
- Vue.js实践:实现多条件筛选、搜索、排序及分页的表格功能
- Node.js、express、mongodb 实现分页查询、条件搜索
- Vue.js实现多条件筛选、搜索、排序及分页的表格功能
- thymeleaf实现简单的条件搜索并分页搜索功能
- 【转】实现多条件筛选、搜索、排序及分页的表格功能
- Vue.js实现多条件筛选、搜索、排序及分页的表格功能
- 菜鸟进阶--node+vue实现一个商城Demo(2):多条件模糊搜索+分页
- 与具体ORM实现无关的属性过滤条件封装类, 主要记录页面中简单的搜索过滤条件.
- AJAX实现导航式多条件搜索
- MVC精华之实现AJAX分页和搜索 及 实现HTML分页和搜索
- SSM框架——实现分页和搜索分页
- Lucene+ik的分页和多条件模糊交集搜索
- Yii 2.0实现联表查询加搜索分页的方法示例
- 黑马程序员_学习日记49_618数据库开发及ADO.Net(多条件搜索、case…when…语句、索引Index、子查询、分页、Join语句)
- Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询
- 利用vue + element实现表格分页和前端搜索的方法
- combogrid实现分页、动态搜索、过滤手动输入
- Hibernate使用原生的动态sql实现带条件的查询分页功能