列表界面:

主要实现方式:前台组合json格式查询条件,提交至后台解析处理

一.前台搜索脚本

String.prototype.replaceAll = function (s1, s2) {
    return this.replace(new RegExp(s1,"gm"),s2);
};

function doMongoSearch(){
 var whereCond = new Object();
 $("input[query],select[query]").each(function (index, domEle) {
  var type = $(domEle).attr('type');
  var query = $(domEle).attr('query').toUpperCase();
  var name = $(domEle).attr('name');
  var value = $(domEle).attr('value');
  var checked = $(domEle).attr('checked');
  var classVal = $(domEle).attr('class');
  if (classVal != undefined){
   if (classVal.indexOf("easyui-combobox") != -1){
    value = $(domEle).combobox('getValue');
    name = $(domEle).attr('id');
    type = "text";
   }else if (classVal.indexOf("easyui-datebox") != -1){
    value = $(domEle).datebox('getValue');
    name = $(domEle).attr('id');
    type = "text";
   }else if (classVal.indexOf("easyui-numberbox") != -1){
    value = $(domEle).numberbox('getValue');
    name = $(domEle).attr('id');
    type = "text";
   }
  }
  if((type =="text" || type=="select-one" || type=="hidden") && value != ""){
   if (query == "BEGIN_DATE"){
    whereCond["B$_"+name] = ">=@" + value.replaceAll("-","");
   }else if (query == "END_DATE"){
    whereCond["E$_"+name] = "<=@" + value.replaceAll("-","");
   }else if (query == "BEGIN_TIME"){
    whereCond["B$_"+name] = ">=@" + value.replaceAll("-","")+ "000000000";
   }else if (query == "END_TIME"){
    whereCond["E$_"+name] = "<=@" + value.replaceAll("-","")+ "235959999";
   }else{
    whereCond[name] = query + "@" + value;
   }
  } else if ((type=="checkbox" || type=="radio") && checked){
   whereCond[name] = query + "@" + value;
  }
 });
 var queryParams = $('#list_data').datagrid('options').queryParams;
 queryParams.whereCond = JSON.stringify(whereCond);
 $('#list_data').datagrid('getPager').pagination('select', 1);
}

/**
 * 查询条件清除
 * @return
 */
function cleanSearch(){
 $("input[query],select[query]").each(function (index, domEle) {
  var type = $(domEle).attr('type');
  var classVal = $(domEle).attr('class');
  if(type == undefined || type =="text" || type=="select-one"){
   if (classVal != undefined){
    if (classVal.indexOf("easyui-combobox") != -1){
     $(domEle).combobox('clear');
    }else if (classVal.indexOf("easyui-datebox") != -1){
     $(domEle).datebox('clear');
    }else if (classVal.indexOf("easyui-numberbox") != -1){
     $(domEle).numberbox('clear');
    }else{
        $(domEle).val("");
    }
   }else{
    $(domEle).val("");
   }
  }else if(type =="checkbox" || type=="radio"){
   $(domEle).attr("checked",false);
  }
 });
}

二.前台html关键代码

<div class="easyui-layout" data-options="fit:true">
            <div data-options="region:'center',border:false" style="padding:1px;">
               <table >
                   <tr>
                       <td>手机号码:</td>
                       <td><input type="text" name="mobile" query="LIKE" style="width: 100px;" ></td>
                   </tr>
                    <tr>
                       <td>运营商:</td>
                       <td>
                         <input id="operator" name="operator" query="=INT" class="easyui-combobox" data-options="
                             valueField:'dictValue',
                             textField:'opName',
                             width:100,
                             url:'/manage/dict.do?action=loadValueName&bean.opId=yys&bean.dictLevel=2'"/>
        </td>
                   </tr>
                    <tr>
                       <td>归属省:</td>
                       <td>
         <input id="province" name="province" query="="  class="easyui-combobox" data-options="
                             valueField:'opId',
                             textField:'opName',
                             width:100,
                             url:'/manage/dict.do?action=loadIdName&bean.opId=cn&bean.dictLevel=2',
                             onSelect: function(node){ 
                 var url = '/manage/dict.do?action=loadIdName&bean.opId='+node.opId;
                 $('#city').combobox('clear');
                 $('#city').combobox('reload', url); 
             }"/>
     </td>
                   </tr> 
                   <tr>
                       <td>归属市:</td>
                       <td>
                         <input id="city" name="city" query="=" class="easyui-combobox"
                         data-options="valueField:'opId',textField:'opName',width:100" />
     </td>
                   </tr>
                   <tr>
                       <td>号码来源:</td>
                       <td>
                         <input id="source" name="source" query="=INT"  class="easyui-combobox" data-options="
                             valueField:'opId',
                             textField:'siteName',
                             width:100,
                             url:'/manage/mobilesite.do?action=loadSourceName'
                             "/>
     </td>
                   </tr>
                   <tr>
                       <td >发布日期从</td>
                       <td><input type="text" name="publish" id="publish" class="easyui-datebox" query="BEGIN_DATE" style="width: 100px;" ></td>
                   </tr>
                   <tr>
                       <td align="right">至</td>
                       <td><input type="text" name="publish" id="publish" class="easyui-datebox" query="END_DATE" style="width: 100px;" ></td>
                   </tr>
              </table>
            </div>
            <div data-options="region:'south',border:false" style="text-align: center; height: 30px; line-height:10px;">
               <a class="easyui-linkbutton" data-options="iconCls:'icon-search'" href="javascript:void(doMongoSearch())">搜索</a>
               <a class="easyui-linkbutton" data-options="iconCls:'icon-no'"  href="javascript:void(cleanSearch())">清空</a>
            </div>
          </div>

三.后台action方法

public String doPage() {
        pageData = new BN_Page("_id", "t_mobile_all", rows, page, sort, order, whereCond);
       pageData = DAO_MobileQuery.getPage(pageData);
       Map<String, Object> jsonMap = new HashMap<String, Object>();//定义map  
       jsonMap.put("total",pageData.getRowCount());
       jsonMap.put("rows", pageData.getData());
       jsonResult =JSONObject.fromObject(jsonMap);
      return "doJSON";
 }

后台DAO_MobileQuery方法

public static BN_Page getPage(BN_Page page) {
  return new DAOMongo().doSelectPage(page, BN_Mobile.class);
 }

后台BN_Page.java关键代码

private ArrayList data = new ArrayList();
    private int rows = 15;
    private int page = 1;

private String whereCond = "";
    private int rowCount;

private String tableName = null;
   private String sort = "";
   private String order = "";

public BN_Page(String keyColumn, String tableName, String rows, String page,
      String sort, String order, String whereCond)
    {
        this.keyColumn = keyColumn;
        this.tableName = tableName;
        this.rows = Integer.parseInt(rows);
        this.page = Integer.parseInt(page);
        this.sort = sort;
        this.order = order;
        this.whereCond = whereCond;
    }

.....常规get/set 方法

后台DAOMongo.java关键方法

public BN_Page doSelectPage(BN_Page page, Class beanClass){
  DBCollection connection = db.getCollection(page.getTableName());
  DBObject queryObject = new BasicDBObject();
  if (!ObjectUtil.isNull(page.getWhereCond())){
   logger.info("whereCond="+page.getWhereCond());
   List<Map<String, Object>> whereCondList = JsonUtil.json2List("["+page.getWhereCond()+"]");
   Map<String, Object> map = whereCondList.get(0);
   Set<String> set = map.keySet();
   for (Iterator<String> it = set.iterator();it.hasNext();) {
    String queryColumn = it.next();
    String queryValue = map.get(queryColumn).toString();
    if (queryColumn.startsWith("B$_") || queryColumn.startsWith("E$_")){
     queryColumn = queryColumn.substring(3);
    }
    if (queryValue.startsWith("LIKE@")){
     queryObject.put(queryColumn,
       Pattern.compile("^.*"+queryValue.substring(5)+".*$", Pattern.CASE_INSENSITIVE));
    }else if (queryValue.startsWith("=@")){
     queryObject.put(queryColumn, queryValue.substring(2));
    }else if (queryValue.startsWith("=INT@")){
     queryObject.put(queryColumn, new Integer(queryValue.substring(5)).intValue());
    }else if (queryValue.startsWith(">@")){
        if (queryObject.containsField(queryColumn)){
         ((BasicDBObject)queryObject.get(queryColumn)).append("$gt",queryValue.substring(2));
        }else{
        queryObject.put(queryColumn, new BasicDBObject("$gt",queryValue.substring(2)));
     }
    }else if (queryValue.startsWith(">INT@")){
     if (queryObject.containsField(queryColumn)){
         ((BasicDBObject)queryObject.get(queryColumn)).append("$gt",new Integer(queryValue.substring(5)).intValue());
        }else{
        queryObject.put(queryColumn, new BasicDBObject("$gt",new Integer(queryValue.substring(5)).intValue()));
     }
    }else if (queryValue.startsWith(">=@")){
     if (queryObject.containsField(queryColumn)){
         ((BasicDBObject)queryObject.get(queryColumn)).append("$gte",queryValue.substring(3));
        }else{
        queryObject.put(queryColumn, new BasicDBObject("$gte",queryValue.substring(3)));
     }
    }else if (queryValue.startsWith(">=INT@")){
     if (queryObject.containsField(queryColumn)){
         ((BasicDBObject)queryObject.get(queryColumn)).append("$gte",new Integer(queryValue.substring(6)).intValue());
        }else{
        queryObject.put(queryColumn, new BasicDBObject("$gte",new Integer(queryValue.substring(6)).intValue()));
     }
    }else if (queryValue.startsWith("<@")){
     if (queryObject.containsField(queryColumn)){
         ((BasicDBObject)queryObject.get(queryColumn)).append("$lt",queryValue.substring(2));
        }else{
        queryObject.put(queryColumn, new BasicDBObject("$lt",queryValue.substring(2)));
     }
    }else if (queryValue.startsWith("<INT@")){
     if (queryObject.containsField(queryColumn)){
         ((BasicDBObject)queryObject.get(queryColumn)).append("$lt",new Integer(queryValue.substring(5)).intValue());
        }else{
        queryObject.put(queryColumn, new BasicDBObject("$lt",new Integer(queryValue.substring(5)).intValue()));
     }
    }else if (queryValue.startsWith("<=@")){
     if (queryObject.containsField(queryColumn)){
         ((BasicDBObject)queryObject.get(queryColumn)).append("$lte",queryValue.substring(3));
        }else{
        queryObject.put(queryColumn, new BasicDBObject("$lte",queryValue.substring(3)));
     }
    }else if (queryValue.startsWith("<=INT@")){
     if (queryObject.containsField(queryColumn)){
         ((BasicDBObject)queryObject.get(queryColumn)).append("$lte",new Integer(queryValue.substring(6)).intValue());
        }else{
        queryObject.put(queryColumn, new BasicDBObject("$lte",new Integer(queryValue.substring(6)).intValue()));
     }
    }else if (queryValue.startsWith("!=@")){
     queryObject.put(queryColumn, new BasicDBObject("$ne",queryValue.substring(3)));
    }else if (queryValue.startsWith("!=INT@")){
     queryObject.put(queryColumn, new BasicDBObject("$ne",new Integer(queryValue.substring(6)).intValue()));
    }
   }
  }

DBObject sortObject = new BasicDBObject();

sortObject.put(page.getSort(), page.getOrder().equals("asc")? 1 : -1);

logger.info("collection="+page.getTableName());

logger.info("queryObject="+queryObject.toString());

logger.info("sortObject="+sortObject.toString());

logger.info("limit="+page.getRows());

logger.info("skip="+page.getRowNo());

DBCursor cursor = connection.find(queryObject);

page.setRowCount(cursor.count());

cursor = cursor.sort(sortObject).limit(page.getRows()).skip(page.getRowNo());

try {

while (cursor.hasNext()){

DBObject object = cursor.next();

BN_Row row = (BN_Row) beanClass.newInstance();

row.columnMap.putAll(object.toMap());

page.addRow(row);

}

} catch (InstantiationException e)

{    // TODO Auto-generated catch block    e.printStackTrace();   } catch (IllegalAccessException e) {    // TODO Auto-generated catch block    e.printStackTrace();   } finally {    cursor.close();   }

db = null;

connection = null;

return page;

}

jQuery EasyUI + struts2.3 + mongoDB 列表查询翻页JAVA样例的更多相关文章

  1. jQuery easyUI的datagrid,如何在翻页以后仍能记录被选中的行

    1.先给出问题解决后的代码 <%@ page language="java" import="java.util.*" pageEncoding=&quo ...

  2. 【技巧】easyUI的datagrid,如何在翻页以后仍能记录被选中的行

    easyUI的datagrid在复选框多选时,如何在翻页以后仍能记录被选中的行: 注意datagrid中需要配置idField属性,一般为数据的主键

  3. 数据库.MongoDB.Java样例

    1.先在MongoDB官网下载Java驱动包 MongoDB Java Driver: http://mongodb.github.io/mongo-java-driver/ JAR包下载列表 htt ...

  4. JQuery easyUI DataGrid 创建复杂列表头(译)

    » Create column groups in DataGrid The easyui DataGrid has ability to group columns, as the followin ...

  5. jquery+正則表達式验证邮箱格式的样例

    js: $("#email").blur(function(){ //获取id相应的元素的值,去掉其左右的空格 var email = $.trim($('#email').val ...

  6. Web jquery表格组件 JQGrid 的使用 - 5.Pager翻页、搜索、格式化、自定义按钮

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  7. jquery easyui combogrid Uncaught TypeError:Cannot read property

    ================================ ©Copyright 蕃薯耀 2020-01-07 https://www.cnblogs.com/fanshuyao/ 一.问题描述 ...

  8. Flask添加翻页功能(非sqlalchemy)

    最近做flask的项目,需要增加翻页的功能,网上找的教程都是结合sqlalchemy的,可是我用的不是sqlalchemy,肿木办呢? 以下是我的做法 一.前端 1.传递页码 前端我使用ajax提交表 ...

  9. 套用JQuery EasyUI列表显示数据、分页、查询

    声明,本博客从csdn搬到cnblogs博客园了,以前的csdn不再更新,朋友们可以到这儿来找我的文章,更多的文章会发表,谢谢关注! 有时候闲的无聊,看到extjs那么肥大,真想把自己的项目改了,最近 ...

随机推荐

  1. C#网站实现QQ第三方登陆# C#快速开发教程

    C#网站实现QQ第三方登陆 说起在网站上面可以直接使用QQ登录功能大家并不陌生.但翻其官方提供的SDK包中却没有C#方向的. 但是我们有个牛人叫张善友,做了一个民间SDK.下面我们就是用他所写的SDK ...

  2. html 之前学习响应式的笔记

    响应式的设计,根据用户设备的不同,用户屏幕大小不同,提供不同的网页设计http://mediaqueri.es/PhoneGap 使用2,如何模拟手机设备chome 浏览器 在32以上设备检测用 de ...

  3. 什么是JavaScript?

  4. 概述ASP.NET缓存机制

    PetShop之ASP.NET缓存机制 如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的.在CPU以及主板的芯片中,都引入了这种名为高速缓冲存储器(Cache)的技 ...

  5. C#调用ActiveX控件

    背景:最近项目中需要用到ActiveX控件,项目是在.Net平台下开发的.因此就直接在项目中添加了对ActiveX控件的引用,添加引用成功.在代码中实例化类的实例也没有问题,但在调用其方法或属性时总是 ...

  6. (六)Struts2 国际化

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:国际化简介 国际化(Internationlization),通俗地讲, ...

  7. 给分类(Category)添加属性

    遇到一个问题,写了一个分类,但原先类的属性不够用.添加一个属性,调用的时候崩溃了,说是找不到getter.setter方法.查了下文档发现,OC的分类允许给分类添加属性,但不会自动生成getter.s ...

  8. jquery 过滤器

    1.基本选择器 基本选择器是JQuery中最常用的选择器,也是最简单的选择器,它通过元素id.class 和标签名来查找DOM元素.这个非常重要,下面的内容都是以此为基础,逐级提高的. 1).“$(“ ...

  9. Java程序实现导出Excel,支持IE低版本

    来博客园两年多了,最近才开通了微博,因为懒所以也一直没有写东西,今天想整理一下自己前段时间遇到的一个导出的问题. 因为项目的需求,要做一部分导出功能.开始的时候用的公司的导出,但是很奇怪有部分模块导出 ...

  10. hdoj(3790) 最短路径

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...