1、数据的加载
我的本地项目为SSH框架搭建的服务器端,由于Struts2 本身支持json的数据传输,所以我就以strust2为例为大家介绍,有不懂strust2的请自学后再来度这篇文章
1、jqgrid向action发送数据请求:
jQuery(grid_selector).jqGrid({ url: "http://localhost/GW/jcxxAction!ryxx_index_r.action", //后台地址action datatype: "json", //返回的json格式数据 height: 450, jsonReader: { root: "rows", //rows 对应实际的结果集合 page: "page", //page 对应当前的页码 total: "total", //total 对应一个多少页 records: "records", //records 对应一共多少条信息 repeatitems: false, //采用colModel模式加载数据信息,以colModel每一列当中的name值自动来匹配rows当中的key id: "jlbh" //行主键为哪个字段 }, colNames: [' ', '编号', '部门名称', '职位', '名字', '邮箱', '账号', '其他', '部门编号'], //table 的title 字段名字设置 colModel: [{ name: 'myac', index: '', width: 80, fixed: true, sortable: false, resize: false, formatter: 'actions', formatoptions: { keys: true, delOptions: { recreateForm: true, beforeShowForm: beforeDeleteCallback }, } }, //返回的结果集类似如下样式:[{jlbh:'1',org:{jlbh:'34',name:'renshibu'},job:'xxx',trunname:'zzzz'},{jlbh:'1',org:{jlbh:'34',name:'renshibu'},job:'xxx',trunname:'zzzz'}] { name: 'jlbh', index: 'jlbh', width: 60, sorttype: "int", editable: true, hidden: true }, { name: 'org.name', index: 'org.name', width: 90, sortable: true, editable: true, edittype: "select", editoptions: { value: getOptionValue() } }, { name: 'job', index: 'job', width: 150, editable: true, editoptions: { size: "20", maxlength: "30" } }, { name: 'trunname', index: 'trunname', width: 150, editable: true }, { name: 'email', index: 'email', width: 90, editable: true, edittype: "checkbox", editoptions: { value: "男:女" }, unformat: aceSwitch }, { name: 'username', index: 'username', width: 150, sortable: false, editable: true, search: true, edittype: "textarea", editoptions: { rows: "2", cols: "10" } }, { name: 'id', index: 'id', width: 150, sortable: false, editable: true, edittype: "textarea", editoptions: { rows: "2", cols: "10" } }, { name: 'orgId' }, ], viewrecords: true, rowNum: 5, //每页显示多少条,会传给后台的 rowList: [5, 10, 20], pager: pager_selector, altRows: true, multiselect: true, multiboxonly: true, loadComplete: function() { var table = this; setTimeout(function() { styleCheckbox(table); updateActionIcons(table); updatePagerIcons(table); enableTooltips(table); }, 0); }, success: function(data) { alert(3); }, editurl: "http://localhost/GW/jcxxAction!hhString.action", //nothing is saved caption: "jqGrid with inline editing" });
2、action方法:
public String ryxx_index_r(){ System.out.println(page); //page 为页面参数,action 中已经有set,get方法 System.out.println(rows); //rows 每页显示多少行数,前端请求给后台的,也已经有了set,get方法 //System.out.println("查询条件:"+filters); userList = userManager.searchUsers(rows,page-1); //查询用户列表,通过rows,page来进行hibernate的分页查询,这里不详说 List l = userManager.searchUsers();//总的结果集查询方法 map = new HashMap<String, Object>(); //数据结果容器,将所有的数据封装 int pages = l.size()%rows==0?l.size()/rows:l.size()/rows+1; //计算总的页数 System.out.println(pages); System.out.println(userList.size()); map.put("rows", userList); //存放实际的数据集合,与前端jsonReader当中root的参数名要相同 map.put("page", page); //存放当前页码 map.put("records",l.size()); //存放总条数 map.put("total", pages); //存放总页数 return "ryxx_index_r"; }
3、strust.xml 设置:
<result name="ryxx_index_r" type="json"><param name="root">map</param></result>