java jqgrid_jqgrid 前后端交互实例

原标题:jqgrid 前后端交互实例

首先,jqGrid 是一个用来显示网格数据的jQuery插件,通过使用jqGrid可以轻松实现前端页面与后台数据的ajax异步通信。

一、jqGrid特性

基于jquery UI主题,开发者可以根据客户要求更换不同的主题。

兼容目前所有流行的web浏览器。

Ajax分页,可以控制每页显示的记录数。

支持XML,JSON,数组形式的数据源。

提供丰富的选项配置及方法事件接口。

支持表格排序,支持拖动列、隐藏列。

支持滚动加载数据。

支持实时编辑保存数据内容。

支持子表格及树形表格。

支持多语言。

目前是免费的。

二、jqGrid使用方式

首先,您需要到jqGrid官网下载最新版本的程序包,下载地址为:http://www.trirand.com/blog/?page_id=6

放在java项目的jquery目录下,如下图

使用是在jsp文件 引用< src="/page/jquery/jqgrid.xmhj.js" type="text/java">>

具体用法可以参照官网中文网址:http://blog.mn886.net/jqGrid/ 基础用法和例子都有

基础例子 前端jsp文件: 有充值表:cy_cz 需要显示字段data_zd:id name KH ..... 通过url传参 onSearch是需要查询条件的 如以姓名name 卡号KH 模糊查询

String url_path = request.getContextPath();

String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + url_path + "/";

pageContext.setAttribute("url", url);

%>

< src="/page/jquery/jqgrid.xmhj.js" type="text/java">>

表格

<>

//传递给服务器用的参数

var post_data={

tablename: "cy_cz",

data_zd: "id,name,KH,JyType,JyRQ,dealtime,ssje,OldJE,NewJE,LsH,gonghao,bak",//显示的数据

//data_name: "id,empid,name,checktime,type,jh,bak",//显示的数据

sel_zd:" T.*,e.name,e.gonghao",//查询的数据

page: "1",//默认页数

rows: "10",//每页记录数

total: 0,//默认0

sidx : "JyRQ",//初始化的时候排序的字段

sord : "desc",//排序方式,可选desc,asc

code: "string,string,string",//传参类型--搜索时共用

codename: "e.name,KH,JyType",//传参名

codevalue: " , ,2",//传参值

lookup_table:"LEFT JOIN empinfo e on e.EmpId=T.empid"

};

setTimeout('showLoader()', 100);//这里要延迟一下,直接调用无法显示加载器

newsList();

function newsList(){

//ajax访问数据库

$.ajax({

url:'${url}jqgrid/getAjaxList?',

type: "post",

data : post_data,

dataType : "json",

success : function(data){

// {"page":"1","total":"0","records":"0","rows":[]}

//{"page":1,"total":3,"records":25,"rows":[{"id":"1","cell":["1","144","","刷卡禁止通过: 没有权限","2019-01-11","0","",""]}}]}

var page=data["page"];//第几页

var total=data["total"];//总页数

var records=data["records"];//记录数

if(records=="0"){

var obj=document.("li");

obj.innerHTML="暂无任何数据!";

$("#ul_dataInfo").append(obj);

}

post_data.total=total;

var rows=data["rows"];//数据

for(var i=0;i

//alert(rows[i]);

var cell=rows[i]["cell"];

var ids=cell[1];

var name=cell[2];

var KH=cell[3];

var dateTime=cell[5]+" "+cell[6];

var ssje=cell[7];

var NewJE=cell[9];var LsH=cell[10];

var gonghao=cell[11];var bak=cell[12];

/*

for(var j=0;j

var obj=document.("li");

obj.innerHTML=""+cell[j]+"";

}

*/

var obj=document.("li");

//给ul元素添加内容

//样式1 单纯内容

//obj.innerHTML=""+name+"";

//样式2 基础内容

//obj.innerHTML=""+name+"";

//样式3 气泡数字

//obj.innerHTML=""+name+"25";

//样式4 大标题加小标题

var mx_url="${url}jqgrid/getPage?url=/page/xfgl/czmxInfo.jsp&id="+ids+"&tableName=cy_cz";

/*obj.innerHTML="

"+name+"

"+KH+"

"+ssje+"元"+

"

"+dateTime+"

"; */

obj.innerHTML="

"+name+" 充值金额:"+ssje+

" 余额:"+NewJE+"

"+"工号:"+gonghao+" 卡号:"+KH+" 流水号:"+LsH+

" 备注:"+bak+"

"+dateTime+"

";

//样式5 图片加内容

//obj.innerHTML=""+name+"";

$("#ul_dataInfo").append(obj);

}

//刷新样式,必须写

$('#ul_dataInfo').listview('refresh');

//setTimeout('hideLoader()', 2000);//根据实际情况看是否需要增加延时

},

error: function(){

alert("请求失败啦!");

setTimeout('hideLoader()', 100);

},

statusCode:{

"404":function(){

alert("404表示页面没有找到");

},

"500":function(){

alert("500表示服务器内部错误");

},

"200":function(){

//alert("200表示请求成功");

setTimeout('hideLoader()', 100);

}

}

});

}

//点击更多

function moreData(){

var page=post_data.page;

var total=post_data.total;

if(page

post_data.page=++post_data.page;

setTimeout('showLoader()', 100);//这里要延迟一下,直接调用无法显示加载器

newsList();

}else{

alert("没有更多记录!");

}

}

//显示加载器.for jQuery Mobile 1.2.0

function showLoader() {

$.mobile.loading('show', {

text: '正在加载中...', //加载器中显示的文字

textVisible: true, //是否显示文字

theme: 'a', //加载器主题样式a-e

textonly: false, //是否只显示文字

html: "" //要显示的html内容,如图片等

});

}

//隐藏加载器.for jQuery Mobile 1.2.0

function hideLoader() {

$.mobile.loading('hide');

}

//搜索事件

function onSearch(val){

//alert(val);

$('#ul_dataInfo li').remove();

post_data.page=1;

post_data.code="string,string";

post_data.codename="e.name,JyType";

post_data.codevalue=""+val+",,2";

setTimeout('showLoader()', 100);//这里要延迟一下,直接调用无法显示加载器

newsList();

}

>

返回

新增

充值记录

后台java控制器: getPageList() 获取分页数据 getAjaxList() json数据通过ajax交互8

package com.aicard.controller;

import java.sql.Timestamp;

import java.text.SimpleDateFormat;

import java.util.Collection;

import java.util.Date;

import java.util.List;

import java.util.Map;

import java.util.Set;

import com.jfinal.core.Controller;

import com.jfinal.plugin.activerecord.Db;

import com.jfinal.plugin.activerecord.Record;

import com.baseDev.jdbc.JDBO;

import com.baseDev.conn.Dpc;

import com.aicard.conn.PageModel;

public class JqGridController extends Controller {

public void getPageList(){

String tablename = this.getPara("tablename");

String code = this.getPara("code");

String codeval = this.getPara("codevalue");

String codename = this.getPara("codename");

String lookup_table = this.getPara("lookup_table");

int count = 0;

Dpc dpc = new Dpc();

String sqlfrom = " FROM "+tablename+" T " ;

String sql=" where 1=1 ";

String sql2= " where 1=1 ";

if(lookup_table!=null&&!lookup_table.equals("")){

if(lookup_table.indexOf("where")>-1||lookup_table.indexOf("WHERE")>-1){

sql2= " ";

}

}

if(code!=null&&code!=""){

String strs[]=code.split(",");

String name[]=codename.split(",");

String val[]=codeval.split(",");

for(int i=0;i

String str=strs[i];

if(val[i]!=null&&(val[i].equals("all")||val[i].equals(" "))){

continue;

}

String sqq=sql;

boolean flag=false;

if(name[i]!=null){

String names=name[i];

if(names.indexOf(".")>-1){

if(names.indexOf("T.")>-1){

}else{

sqq= sql2;

flag=true;

}

}

}

if(str!=null&&str.equals("string")){

sqq = sqq + " AND "+name[i]+" like '%"+val[i]+"%' ";

}else if(str!=null&&str.equals("string2")){

sqq = sqq + " AND "+name[i]+" = '"+val[i]+"' ";

}else if(str!=null&&str.equals("int")){

sqq = sqq + " AND "+name[i]+" = "+val[i]+" ";

}else if(str!=null&&str.equals("double")){

sqq = sqq + " AND "+name[i]+" = "+val[i]+" ";

}else if(str!=null&&str.equals("date")){

sqq = sqq + " and DATE_FORMAT("+name[i]+",'yyyy-MM-dd') = '" + val[i] + "' ";

}else if(str!=null&&str.equals("datef")){

sqq = sqq + " and DATE_FORMAT("+name[i]+",'yyyy-MM-dd') >= '" + val[i] + "' ";

}else if(str!=null&&str.equals("datet")){

sqq = sqq + " and DATE_FORMAT("+name[i]+",'yyyy-MM-dd') <= '" + val[i] + "' ";

}

if(flag){

sql2=sqq;

}else{

sql=sqq;

}

}

}

String resultset="{\"page\":\"1\",\"total\":\"0\",\"records\":\"0\",\"rows\":[]}";

String orderby = "";

String data_zd = this.getPara("data_zd");

String sel_zd = this.getPara("sel_zd");

String page = this.getPara("page");

String sidx = this.getPara("sidx");

String sord = this.getPara("sord");

String rows = this.getPara("rows");

orderby = " ORDER BY " + sidx + " " +sord;

count = JDBO.DataCount(" SELECT "+sel_zd+" FROM (SELECT T.* " + sqlfrom + sql + ") T " + lookup_table + " "+ sql2 );

if(count>0){

dpc = DpcYes(count,Integer.valueOf(rows));

dpc.setCurrentPage(Integer.valueOf(page));

resultset= JDBO.JqPage(dpc, " SELECT "+sel_zd+" FROM (SELECT T.* " + sqlfrom + sql + ") T " + lookup_table + " "+ sql2 + orderby,data_zd);

}

this.renderJson(resultset);

}

public void getAjaxList(){

String tablename = this.getPara("tablename");

String code = this.getPara("code");

String codeval = this.getPara("codevalue");

String codename = this.getPara("codename");

String lookup_table = this.getPara("lookup_table");

int count = 0;

Dpc dpc = new Dpc();

String sqlfrom = " FROM "+tablename+" T " ;

String sql=" where 1=1 ";

String sql2= " where 1=1 ";

if(lookup_table!=null&&!lookup_table.equals("")){

if(lookup_table.indexOf("where")>-1||lookup_table.indexOf("WHERE")>-1){

sql2= " ";

}

}

if(code!=null&&code!=""){

String strs[]=code.split(",");

String name[]=codename.split(",");

String val[]=codeval.split(",");

for(int i=0;i

String str=strs[i];

if(val[i]!=null&&(val[i].equals("all")||val[i].equals(" "))){

continue;

}

String sqq=sql;

boolean flag=false;

if(name[i]!=null){

String names=name[i];

if(names.indexOf(".")>-1){

if(names.indexOf("T.")>-1){

}else{

sqq= sql2;

flag=true;

}

}

}

if(str!=null&&str.equals("string")){

sqq = sqq + " AND "+name[i]+" like '%"+val[i]+"%' ";

}else if(str!=null&&str.equals("string2")){

sql = sqq + " AND "+name[i]+" = '"+val[i]+"' ";

}else if(str!=null&&str.equals("int")){

sqq = sqq + " AND "+name[i]+" = "+val[i]+" ";

}else if(str!=null&&str.equals("double")){

sqq = sqq + " AND "+name[i]+" = "+val[i]+" ";

}else if(str!=null&&str.equals("date")){

sqq = sqq + " and date_format("+name[i]+",'yyyy-MM-dd') = '" + val[i] + "' ";

}else if(str!=null&&str.equals("datef")){

sqq = sqq + " and date_format("+name[i]+",'yyyy-MM-dd') >= '" + val[i] + "' ";

}else if(str!=null&&str.equals("datet")){

sqq = sqq + " and date_format("+name[i]+",'yyyy-MM-dd') <= '" + val[i] + "' ";

}

if(flag){

sql2=sqq;

}else{

sql=sqq;

}

}

}

String resultset="{\"page\":\"1\",\"total\":\"0\",\"records\":\"0\",\"rows\":[]}";

String orderby = "";

String data_zd = this.getPara("data_zd");

String sel_zd = this.getPara("sel_zd");

String page = this.getPara("page");

String sidx = this.getPara("sidx");

String sord = this.getPara("sord");

String rows = this.getPara("rows");

orderby = " ORDER BY " + sidx + " " +sord;

count = JDBO.DataCount(" SELECT "+sel_zd+" FROM (SELECT T.* " + sqlfrom + sql + ") T " + lookup_table + " "+ sql2 );

if(count>0){

dpc = DpcYes(count,Integer.valueOf(rows));

dpc.setCurrentPage(Integer.valueOf(page));

resultset= JDBO.JqPage(dpc, " SELECT "+sel_zd+" FROM (SELECT T.* " + sqlfrom + sql + ") T " + lookup_table + " "+ sql2 + orderby,data_zd);

}

this.renderJson(resultset);

}

public void getPage(){

String url=this.getPara("url");

String id=this.getPara("id");

String tableName=this.getPara("tableName");

if(tableName!=null&&!tableName.equals("")){

Record pojo = Db.findById(tableName,id);

this.setAttr("pojo", pojo);

}

this.setAttr("id", id);

this.render(url);

}

public void addPage(){

String url=this.getPara("url");

String id=this.getPara("id");

String tableName=this.getPara("tableName");

if(tableName!=null&&!tableName.equals("")&&id!=null&&!id.equals("")){

Record pojo = Db.findById(tableName,id);

this.setAttr("pojo", pojo);

}

this.setAttr("id", id);

this.setAttr("tableName", tableName);

this.render(url);

}

public void savePage(){

String url=this.getPara("url");

String id=this.getPara("id");

String tableName=this.getPara("tablename");

if(tableName!=null&&!tableName.equals("")){

this.renderText("-1");

}

Record pojo = new Record();

Record rd=null;

if(tableName!=null&&!tableName.equals("")&&id!=null&&!id.equals("")){

rd = Db.findById(tableName,id);

if(rd!=null)

pojo=rd;

}

String code = this.getPara("code");

String codeval = this.getPara("codevalue");

String codename = this.getPara("codename");

if(code!=null&&code!=""){

String strs[]=code.split(",");

String name[]=codename.split(",");

String val[]=codeval.split(",");

for(int i=0;i

String str=strs[i];

if(val[i]==null){

continue;

}

if(str=="date"||str.equalsIgnoreCase("date")){

pojo.set(name[i],Timestamp.valueOf(val[i]));

}else{

pojo.set(name[i],val[i]);

}

}

}

boolean result=false;

if(rd!=null){

result=Db.update(tableName, pojo);

}else{

result=Db.save(tableName, pojo);

}

if(result)

this.renderText("1");

else

this.renderText("0");

}

//操作提示

public void Msg(String statusCode,String message,String callbackType,String rel){

this.setAttr("statusCode", statusCode);

this.setAttr("message", message);

this.setAttr("callbackType", callbackType); //closeCurrent

this.setAttr("rel", rel); //closeCurrent

this.render("/public/ajaxDone.jsp");

}

//操作提示

public void MsgAll(

String statusCode,

String message,

String navTabId,

String rel,

String callbackType,

String forwardUrl,

String confirmMsg)

{

this.setAttr("statusCode", statusCode);

this.setAttr("message", message);

this.setAttr("navTabId", navTabId); //navTabId

this.setAttr("rel", rel); //rel

this.setAttr("callbackType", callbackType); //closeCurrent

this.setAttr("forwardUrl", forwardUrl); //forwardUrl

this.setAttr("confirmMsg", confirmMsg); //confirmMsg

this.render("/public/ajaxDone.jsp");

}

//列表值为空时,默认分页值

public Dpc DpcNo(){

Dpc dpc = new Dpc();

int numPerPage = 20;

try{

numPerPage = Integer.valueOf(this.getPara("numPerPage"));

}

catch(Exception e){

numPerPage = 20;

}

dpc.setAllCount(0);

dpc.setCurrentPage(1);

dpc.setNumPerPage(numPerPage);

dpc.setPageCount(0);

return dpc;

}

//列表值不为空时,默认分页值

public Dpc DpcYes(int allcount){

Dpc dpc = new Dpc();

int numPerPage = 20; //每页记录

int CurrentPage = 1; //当前页

int PageCount = 1; //总页数

//每页记录

try{

numPerPage = Integer.valueOf(this.getPara("numPerPage"));

}

catch(Exception e){

numPerPage = 20;

}

if(numPerPage==0)

numPerPage = 20;

//当前页

try{

CurrentPage = Integer.valueOf(this.getPara("pageNum"));

}catch(Exception e){

CurrentPage = 1;

}

if(CurrentPage==0)

CurrentPage = 1;

//总页数

PageCount = (allcount + numPerPage - 1)/numPerPage;

dpc.setAllCount(allcount);

dpc.setCurrentPage(CurrentPage);

dpc.setNumPerPage(numPerPage);

dpc.setPageCount(PageCount);

return dpc;

}

//列表值不为空时,默认分页值带参数

public Dpc DpcYes(int allcount,int numPerPage){

Dpc dpc = new Dpc();

dpc.setAllCount(allcount);

dpc.setCurrentPage(PageModel.StringToInt(this.getPara("pageNum"), 1));

dpc.setNumPerPage(PageModel.StringToInt(this.getPara("numPerPage"),numPerPage));

dpc.setPageCount((allcount+dpc.getNumPerPage() - 1)/dpc.getNumPerPage());

return dpc;

}

//数据列表分页

public List Page(Dpc dpc,String sql){

List page = JDBO.oraclePage(dpc, sql);

return page;

}

//数据列表分页

public List getTask(){

List pojosTask = null;

pojosTask = Db.find("select * from TASK_TYPE t order by t.DISP_ORDER");

return pojosTask;

}

}

页面效果如下:

该功能是要用于微信端的 网页看起来较丑,使用了jfinal框架 ,引入jqGrid 和 jqGridMobile.

后台的代码写得有些乱,还有待优化。

---------------------

作者:java coder

原文:https://blog.csdn.net/zhq505824802/article/details/86527903

版权声明:本文为博主原创文章,转载请附上博文链接!

责任编辑:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值