`
tanlingcau
  • 浏览: 135588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jqGrid:六、 search

阅读更多
页面
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
    <head>
        <title>grid.html</title>
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3" />
        <meta http-equiv="description" content="this is my page" />
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />

        <link rel="stylesheet" type="text/css" media="screen"
            href="css/themes/redmond/jquery-ui-1.8.2.custom.css" />
        <link rel="stylesheet" type="text/css" media="screen"
            href="css/themes/ui.jqgrid.css" />
        <link rel="stylesheet" type="text/css" media="screen"
            href="css/themes/ui.multiselect.css" />
        <link rel="stylesheet" type="text/css" media="screen"
            href="css/themes/jquery.searchFilter.css" />
        <style>
html,body { -
    -margin: 0; /* Remove body margin/padding */
    padding: 0;
    overflow: hidden; /* Remove scroll bars on browser window */
    font-size: 75%;
}
</style>

        <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
        <script src="js/jquery-ui-1.8.2.custom.min.js" type="text/javascript"></script>
        <script src="js/src/ui.multiselect.js" type="text/javascript"></script>
        <script src="js/src/grid.loader.js" type="text/javascript"></script>
        <script type="text/javascript">
            $.jgrid.no_legacy_api = true;
            $.jgrid.useJSON = true;
        </script>
        <script type="text/javascript">
            $(function(){ 
              $("#grid_id").jqGrid({
                url:'/demo2/servlet/JqGridJsonServlet',
                mtype: 'GET',
                datatype: 'json',
                jsonReader : {
                    id: "invId",//the unique id of the row.如果不设置则默认为行号.
                    repeatitems: false
                    //element tells jqGrid that the information for the data in the row is repeatable - i.e. the elements have the same tag cell described in cell element. Setting this option to false instructs jqGrid to search elements in the json data by name. This is the name from colModel or the name described with the jsonmap option in colModel.
                    //A very useful feature here is that there is no need to include all the data that is represented in colModel. Since we make a search by name, the order does not need to match the order in colModel.
                    //设置为false,则可以在json串中根据列/值为传数据,并且列/值在json串中的位置可以随意,也可以不传。 
                },
                height: "auto",
                loadui: "disable",
                colNames:['Inv No','Date', 'ClientId', 'Amount','Tax','Total','Notes'],
                colModel :[ 
                  {name:'invId', index:'invId', width:70, search:false}, 
                  //name:Set the unique name in the grid for the column. This property is required. As well as other words used as property/event names, the reserved words (which cannot be used for names) include subgrid, cb and rn.
                  //index:Set the index name when sorting. Passed as sidx parameter.index是后台排序时使用。
                  //search:Determines if the field can be searched.是否可以作为搜索条件
                  {name:'invDate', index:'invDate', width:120, editable:true, search:false}, 
                  {name:'client_Id', index:'client_Id', width:120, editable:true}, 
                  {name:'amount', index:'amount', width:90, align:'right', editable:true}, 
                  {name:'tax', index:'tax', width:90, align:'right', editable:true}, 
                  {name:'total', index:'total', width:90, align:'right', editable:true}, 
                  {name:'note', index:'note', width:180, sortable:false, editable:true, search:false} 
                ],
                pager: '#pager',
                rowNum:10,
                rowList:[10,20,30],
                sortname: 'invid',
                sortorder: 'asc',
                viewrecords: true,
                caption: 'My first grid'
              });
              //jQuery("#grid_id").jqGrid('navGrid','#pager',{parameters},prmEdit, prmAdd, prmDel, prmSearch, prmView)
              jQuery("#grid_id").jqGrid('navGrid','#pager',{add:true,edit:true,view:true,del:true,search:true,refresh:true},
                  {url:'/demo2/servlet/JqGridJsonServlet',closeAfterEdit:true, closeOnEscape:true, left:240}, // settings for edit
                {url:'/demo2/servlet/JqGridJsonServlet',closeAfterAdd:true, closeOnEscape:true, left:240}, // settings for add
                {url:'/demo2/servlet/JqGridJsonServlet',closeAfterEdit:true, closeOnEscape:true, top:90, left:240, resize:false, drag:false},  // settings for del
                {url:'/demo2/servlet/JqGridJsonServlet',multipleSearch:true, closeAfterSearch:true, closeOnEscape:true, sopt:['le','ge']}, // enable the advanced searching
                {closeOnEscape:true, left:240} // allow the view dialog to be closed when user press ESC key
              );
            }); 
        </script>
    </head>
    <body>
        <table id="grid_id"></table>
        <div id="pager"></div>
    </body>
</html>

servlet
package com.qoma.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;

import com.et.ar.exception.ActiveRecordException;
import com.qoma.db.vo.InvHeader;
import com.qoma.service.InvHeaderService;
import com.qoma.util.Json;

public class JqGridJsonServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1676458940650461673L;

    private InvHeaderService service = new InvHeaderService();
    private InvHeader vo;

    private String search;// 是否为搜索
    private String filters;// 搜索值
    private String searchField;
    private String searchOper;
    private String searchString;

    private Integer page;// 当前页
    private Integer rows;// 每页记录数
    private String sidx;// 排序列
    private String sord;// 排序为正序倒序
    private String oper;// 数据操作

    private String s;// 返回值

    private Long count;// 总记录数
    private Integer totalPages;// 总页数
    private Integer start;// 开始位置

    /**
     * Constructor of the object.
     */
    public JqGridJsonServlet() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        super.destroy(); // Just puts "destroy" string in log
        // Put your code here
    }

    /**
     * The doGet method of the servlet. <br>
     * 
     * This method is called when a form has its tag value method equals to get.
     * 
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    /**
     * The doPost method of the servlet. <br>
     * 
     * This method is called when a form has its tag value method equals to
     * post.
     * 
     * @param request
     *            the request send by the client to the server
     * @param response
     *            the response send by the server to the client
     * @throws ServletException
     *             if an error occurred
     * @throws IOException
     *             if an error occurred
     */
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        this.initParameter(request);

        if ("true".equals(search)) {// 搜索
            if (StringUtils.isEmpty(filters)) {// 单条件搜索
                this.pageCount();
                try {
                    List<InvHeader> list = service.getLimitList(start, rows, sidx, sord, searchField, searchString, searchOper);
                    s = service.getAllJson(page, totalPages, count, list);
                } catch (ActiveRecordException e) {
                    e.printStackTrace();
                    s = Json.FAILURE;
                }
            } else {// 多重搜索
                //filters = {"groupOp":"AND","rules":[{"field":"client_Id","op":"eq","data":"2"},{"field":"tax","op":"ne","data":"4"}]}
            }
        } else {
            if (StringUtils.isEmpty(oper)) {// 查询操作
                this.pageCount();
                try {
                    List<InvHeader> list = service.getLimitList(start, rows, sidx, sord);
                    s = service.getAllJson(page, totalPages, count, list);
                } catch (ActiveRecordException e) {
                    e.printStackTrace();
                    s = Json.FAILURE;
                }
            } else {// 增删改操作
                if ("del".equals(oper)) {
                    try {
                        service.deleteInvHeader(vo);
                        s = Json.SUCCESS;
                    } catch (ActiveRecordException e) {
                        e.printStackTrace();
                        s = Json.getFailure(e.getMessage());
                    }
                } else {
                    if ("add".equals(oper)) {
                        try {
                            if (service.addInvHeader(vo)) {
                                s = Json.SUCCESS;
                            } else {
                                s = Json.FAILURE;
                            }
                        } catch (ActiveRecordException e) {
                            e.printStackTrace();
                            s = Json.getFailure(e.getMessage());
                        }
                    } else if ("edit".equals(oper)) {
                        try {
                            if (service.updateInvHeader(vo)) {
                                s = Json.SUCCESS;
                            } else {
                                s = Json.FAILURE;
                            }
                        } catch (ActiveRecordException e) {
                            e.printStackTrace();
                            s = Json.getFailure(e.getMessage());
                        }
                    }
                }
            }
        }

        out.println(s);
        out.flush();
        out.close();
    }

    /**
     * Initialization of the servlet. <br>
     * 
     * @throws ServletException
     *             if an error occurs
     */
    public void init() throws ServletException {
        // Put your code here
    }

    private void initParameter(HttpServletRequest request) {
        search = request.getParameter("_search");
        filters = request.getParameter("filters");
        searchField = request.getParameter("searchField");
        searchOper = request.getParameter("searchOper");
        searchString = request.getParameter("searchString");

        oper = request.getParameter("oper");
        String pageValue = request.getParameter("page");
        page = StringUtils.isEmpty(pageValue) ? 0 : Integer.parseInt(pageValue);
        String rowsValue = request.getParameter("rows");
        rows = StringUtils.isEmpty(rowsValue) ? 0 : Integer.parseInt(rowsValue);
        sidx = request.getParameter("sidx");
        sord = request.getParameter("sord");

        String idValue = request.getParameter("id");
        Integer invId = (StringUtils.isEmpty(idValue) || "_empty".equals(idValue)) ? 0 : Integer.parseInt(idValue);// add操作时,id值默认为_empty
        String invDateValue = request.getParameter("invDate");
        String clientIdValue = request.getParameter("client_Id");
        String amountValue = request.getParameter("amount");
        String taxValue = request.getParameter("tax");
        String totalValue = request.getParameter("total");
        String noteValue = request.getParameter("note");

        vo = new InvHeader();
        vo.invId = invId;
        vo.invDate = invDateValue;
        vo.client_Id = StringUtils.isEmpty(clientIdValue) ? 0 : Integer.parseInt(clientIdValue);
        vo.amount = StringUtils.isEmpty(amountValue) ? 0 : Float.parseFloat(amountValue);
        vo.tax = StringUtils.isEmpty(taxValue) ? 0 : Float.parseFloat(taxValue);
        vo.total = StringUtils.isEmpty(totalValue) ? 0 : Float.parseFloat(totalValue);
        vo.note = noteValue;
    }

    private void pageCount() {
        if (StringUtils.isEmpty(searchField) || StringUtils.isEmpty(searchString) || StringUtils.isEmpty(searchOper)) {
            try {
                count = service.getCount();
            } catch (ActiveRecordException e) {
                e.printStackTrace();
            }
        } else {
            try {
                count = service.getCount(searchField, searchString, searchOper);
            } catch (ActiveRecordException e) {
                e.printStackTrace();
            }
        }
        
        if (null == sidx || "".equals(sidx))
            sidx = "1";

        if (count > 0 && rows > 0) {
            totalPages = new Long(count / rows).intValue();
            if (count % rows != 0) {
                totalPages += 1;
            }
        } else {
            totalPages = 0;
        }

        // if for some reasons the requested page is greater than the
        // total
        // set the requested page to total page
        if (page > totalPages)
            page = totalPages;

        // calculate the starting position of the rows
        start = rows * page - rows;

        if (start < 0)
            start = 0;

    }

}
分享到:
评论

相关推荐

    jQgrid+demo

    直接从官方网站上下载...2 如果遇到Toolbar上 search按钮 放大镜图标 出现布局错误 遮罩把所有内容都遮住了 此时可以尝试将demo文件夹中的 themes目录下的 ui jqgrid css 文件 替换为源码包中的版本 或者替换成 http: ...

    关于jqGrid中查询功能

    jqGrid 按多个条件 或单个条件进行查询

    jquery.jqGrid-4.4.1

    jqGrid 4.4.1 New search module, Tree Grid and SubGrid improvements, new colModel cellattr event and much more... Enjoy

    DengueSample:课程范例网站

    此为课程范例网站,利用一个快速打造的Web 介绍Microsoft Azure WebApp 的功能,以及如何利用Microsoft Azure Search 服务建立高水准的搜寻功能。 资料来源 政府资料开放平台提供的登革热近12个月每日确定病例统计 ...

    基于PHP和Mysql相结合使用jqGrid读取数据并显示

    jqGrid本身带有search和edit表格模块,但是这些模块会使得整个插件体积显得有点庞大,而且笔者认为jqGrid的搜索查询和编辑/添加功能不好用,所以笔者放弃jqGrid自有的search和edit表格模块,借助jquery利器来完成...

    给jqGrid数据行添加修改和删除操作链接(之一)

    我这里用的不是jqGrid的自带的编辑和删除操作,我已经把分页导航栏下的编辑,删除,搜索都取消掉了,就是这句$(“#list1”).navGrid(“#pager1”,{edit:false,del:false, search:false}), 然后在数据加载完成后,给每...

    人工智能-项目实践-信息检索-基于SpringBoot+MyBaties+Thymeleaf+Elasticsearch开展的个

    前台模块中bootstrap-paginator分页插件,sweetalert、jqGrid、toastr。 后端: SpringBoot做基础框架、SpringSecurity做授权与认证、Mybaties做数据访问层控制,全文检索使用Elasticsearch、数据库使用MySQL。 ...

    基于springboot+mybatis+redis+es+bootstrap的搜索实战项目

    springboot + mybatis + bootstrap + jqgrid + ajax + elasticsearch(用到在整合) + redis(用到在整合) 项目编码: UTF-8 项目名称: poem 数据库名称: poem 项目中包结构: src/main/java com.baizh.xxx ...

    SpringMVC、Mybatis、Hibernate、Bootstrap、jQuery、HTML5、SpringSecurity、Lucene、Ehcache

    后端主要技术:Spring 4.1.5(管理事务)、Spring MVC 4.1.5(作为控制层)、Spring Security 4.0.0(认证和授权,权限管理)、Hibernate 4.3.8(作为数据持久层)、MyBatis 3.2.8(作为数据持久层)、Hibernate Search 5.1.0...

    bootstrap ace_admin1.3.1 (最新版)

    Search results Tables with details FAQ page (now available) User profile (now available) Inline editable data (now available) File upload and management Email template (now available) Inbox & messages...

    jQuery序列化form表单数据为JSON对象的实现方法

    $("#searchForm").serialize(); 但是,观察输出的信息,发现serialize()方法做的是将表单中的数据以htpp请求格式拼接成字符串。 serialize确实是能够解决一般的提交数据。但是有时我们需要的是一个object对象,而...

    AJAX and PHP.pdf

    JavaScript, they can't be easily bookmarked by users, and search engines don't always know how to parse them. Also, not everyone likes AJAX. While some are developing enterprise architectures using ...

    H+ 后台主题UI框架v4.1 带文档 未压缩版

    ├── search_result.html(搜索结果) ├── skin-config.html(主题设置选项) ├── social_feed.html(信息流) ├── spinners.html(加载动画) ├── suggest.html(搜索建议) ├── sweetalert...

Global site tag (gtag.js) - Google Analytics