jQuery学习笔记--jqGrid的单字段和多字段查询 详解
首先说明一下,什么是jqGrid的单字段查询。就是只能通过一个字段作为查询条件的查询。虽然大多数情况下,系统功能需要的查询,都是多个字段组合查询的,jqGrid也提供组合多个字段的查询,但是组合多个字段的查询,其实基于的原理还是单字段的查询。所以这里主要介绍一下单字段的查询,以后有机会在来说明一下高级一点的多字段组合查询。
大家可以先看看图片,对单字段查询有一个直观的了解(图片来源于jqGrid的wiki)
这里需要注意的几点分别说明如下:
首先,其实默认jqGrid就有这个功能,所以,向上一篇文章中的例子一样,基本上不需要在js中添加其他的代码。
其次,哪些字段能作为单字段查询,哪些字段不能,这是在jqGrid的colModel属性中可以进行设置的。比如,如果我们对某一个列的数据设置如下:{name:'userName',index:'usrName', width:110,search=false} 那么这个userName列是不会在单字段查询中显示出来的。
第三,点击上面图中的"Find"按钮之后,jqGrid会额外的向服务器发送几个参数过去。想必你已经猜到了,这些参数就是图片中显示的:查询字段searchField,查询操作searchOper以及查询值searchString。这里之所以说是额外的参数,是相对于默认情况下的参数,比如前一篇文章中所说的page,sidx,sord,rows,_search,nd这些参数而言的。当然,这里_search参数的值是true。
第四,最烦处理的,就是如何把我们的searchOper的参数值,转换为对数据库记录的查询操作。
页面上显示的操作,主要包括'equal', 'not equal', 'less', 'less or equal','greater','greater or equal', 'begins with','does not begin with','is in','is not in','ends with','does not end with','contains','does not contain'。相应的,后台获取到的searchOper的值,对应的是'eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'。
最最简单的想法就是像我这养,写一个方法来处理:(以下的例子是基于Hibernate写的)
view plain
1. /**
2. * 根据参数获取查询HQL的语句(如果是日期字段可能会出问题)
3. * @param sField 字段名称
4. * @param sOper 操作名称
5. * @param sValue 值
6. * @return
7. */
8. public static String getOperation(String sField, String sOper,String sValue){
9.
10. if(sValue==null || sValue.trim().length() ==0)
11. return "";
12. String result = "";
13. if(sOper.trim().equals("eq")) //等于 result = sField + "='" + sValue +"' ";
14. else if(sOper.trim().equals("ne")) //不等于 result = sField + " != '"+ sValue+"' ";
15. else if(sOper.trim().equals("lt")) //小于 result = sField + " < '"+ sValue+"' ";
16. &
相关新闻>>
- 发表评论
-
- 最新评论 更多>>