当前位置: 代码迷 >> JavaScript >> jqGrid:4、 remote data(JSON)
  详细解决方案

jqGrid:4、 remote data(JSON)

热度:728   发布时间:2012-10-31 14:37:32.0
jqGrid:四、 remote data(JSON)
页面
<!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 : {
                   repeatitems: false
                },
                height: "auto",
                loadui: "disable",
                colNames:['Inv No','Date', 'Amount','Tax','Total','Notes'],
                colModel :[ 
                  {name:'invId', index:'invId', width:70}, 
                  {name:'invDate', index:'invDate', 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} 
                ],
                pager: '#pager',
                rowNum:10,
                rowList:[10,20,30],
                sortname: 'invid',
                sortorder: 'asc',
                viewrecords: true,
                caption: 'My first grid'
              });
            }); 
        </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();

    /**
     * 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();

        String oper = request.getParameter("oper");
        String s = "";
        if (null == oper || "".equals(oper)) {
            Integer page = Integer.parseInt(request.getParameter("page"));
            Integer limit = Integer.parseInt(request.getParameter("rows"));
            String sidx = request.getParameter("sidx");
            String sord = request.getParameter("sord");
            if (null == sidx || "".equals(sidx))
                sidx = "1";

            Long count = 0L;
            try {
                count = service.getCount();
            } catch (ActiveRecordException e) {
                e.printStackTrace();
            }
            Integer totalPages = 0;
            if (count > 0 && limit > 0) {
                totalPages = new Long(count / limit).intValue();
                if (count % limit != 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
            Integer start = limit * page - limit;

            if (start < 0)
                start = 0;

            try {
                List<InvHeader> list = service.getLimitList(start, limit, sidx, sord);
                s = service.getAllJson(page, totalPages, count, list);
            } catch (ActiveRecordException e) {
                e.printStackTrace();
                s = Json.FAILURE;
            }
        } else {
            String idValue = request.getParameter("id");
            Integer invId = (StringUtils.isEmpty(idValue) || "_empty".equals(idValue)) ? 0 : Integer.parseInt(idValue);// add操作时,id值默认为_empty
            InvHeader vo = new InvHeader();
            vo.invId = invId;
            if ("del".equals(oper)) {
                try {
                    service.deleteInvHeader(vo);
                    s = Json.SUCCESS;
                } catch (ActiveRecordException e) {
                    e.printStackTrace();
                    s = Json.getFailure(e.getMessage());
                }
            } else {
                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.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;
                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
    }

}
  相关解决方案