Jsp
<script type="text/javascript"> //初始化 $(function(){ //jQGrid列表 jQuery("#list").jqGrid({ url:'<%=basePath%>createGrid.action', datatype: "json", mtype: 'POST', height: 240, autowidth: true, altRows:true,//隔行变色 altclass:'ui-widget-content-altclass',//隔行变色样式 colNames:['id','name','operation'], colModel:[ {name:'id',key:true,index:'id',hidden:true},//如果需要对行操作,则选择一个主键 key:true {name:'name',index:'name',sortable:false},//如果需要点击表头排序 则sortable:false {name:'act',index:'act',width:200,sortable:false,title:false,align:"center" ,sortable:false} ], gridComplete: function(){ //列表生成后,给某一列绑定操作 例如删除操作 var ids = $("#list").jqGrid('getDataIDs'); for(var i=0;i < ids.length;i++){ showInfo = "<a href='##' onclick=\"showInfo('"+ids[i]+"');\">"+$("#list").jqGrid('getRowData',ids[i]).id+"</a>"; $("#list").jqGrid('setRowData',ids[i],{act:showInfo}); } }, postData: { //传递的数据,定义在form中 //查询所用 'searchId': function() { return $("#searchId").val(); }, 'searchName': function() { return $("#searchName").val(); } }, shrinkToFit:true, rowNum:10,//初始化时每一页显示的个数 rowList:[10,20,30],//每一页能显示的个数 jsonReader:{ root:"listJson", // 从服务端返回的实际数据,名字随意起,但是在Action类中必须有与之匹配的属性 repeatitems : false }, rownumbers: true, pager: '#pager_List',//如果不需要左下角的 自带的查询 刷新功能 就不用添加在最后一行的 jqGrid('navGrid','#pager_List'... sortname: 'id', viewrecords: true, sortorder: "desc", multiselect: true caption: "jQGrid列表" }); jQuery("#list").jqGrid('navGrid','#',{add:false,edit:false,del:false}); } </script> <body> <table id="list"></table><!-- 列表 --> <div id="pager_List"></div><!-- 分页组件 --> </body>
Struts.xml
<action name="createGrid" class="listAction" method="geneTranGrid"> <result name="success" type="json"> <param name="includeProperties"><!-- 包含在includeProperties的属性可以被序列化为JSON格式,可以被jqgrid接收 --> ^listJson\[\d+\]\.\w+, rows, page, total, records </param> <param name="noCache">true</param><!-- 禁止浏览器缓存 --> <param name="ignoreHierarchy">false</param><!-- 序列化List --> </result> </action>
Java
/** * JQGrid Action * * @author firnice * @class * @date 2012-9-7 */ public class ListAction extends ActionSupport { // 每页中显示记录的行数 private Integer rows = 0; // 当前页码 private Integer page = 0; // 总页数 private Integer total = 0; // 总记录数 private Integer records = 0; // 列表 名称与struts.xml对应 与jqgrid配置里jsonReader的root属性对应 private List<listDto> listJson; // 查询变量 private listDto searchDto; /** * JQGrid列表 函数名与struts.xml对应 * * @author firnice * @return * @date 2012-9-7 */ public String geneTranGrid() { try { // 总记录数 records = Long.valueOf( this.getBusinessFacade().findListCount(this.searchDto)) .intValue(); // 从第几条开始查询 int from = rows * (page - 1); if (from >= records && page != 1) { page = page - 1; from = rows * (page - 1); } this.searchDto.setFirstRow(String.valueOf(from)); this.searchDto.setEndRow(String.valueOf(rows)); // 从数据库取得jqgrid原始数据 // 总页数 total = (int) Math.ceil((double) records / (double) rows); this.listJson = this.getBusinessFacade().findList(this.searchDto); } catch (Exception e) { e.printStackTrace(); } return SUCCESS; } }