easyui treegrid+spring mvc服务端分页——前端加后台(注意点) weir 2017-03-28 17:46:46.0 easyui 5537 easyui的treegrid服务器端分页,网上找的都不怎么能用,基本没有,今天实现了,记录一下。 页面: property_treeGrid=$('#property_treeGrid').treegrid({ url : '${pageContext.request.contextPath}/productProperty/list', pagination: true, pageSize: 10, pageList: [10,20,50], idField: 'id', treeField: 'name', fit : true, fitColumns : false, border : false, singleSelect:true, columns : [ [ {title : '编号',field : 'id',width : 180, hidden : true}, {title : '规格名称', field : 'name',width : 180}, {field : 'productName', title : '产品名称', width : 300}, {field : 'alias',title : '别名', width : 180}, {field : 'price',title : '单价',width : 180,hidden:true}, {field : 'parentId',title : '父菜单ID',width : 180,hidden : true} ] ], toolbar :'#tb', onBeforeLoad: function(row,param){ if (!row) { // load top level rows param.id = 0; // set id=0, indicate to load new page rows } }, onContextMenu : function(e, row) { e.preventDefault(); $(this).treegrid('clearSelections'); $(this).treegrid('clearChecked'); $(this).treegrid('select', row.id); $('#menu_menu').menu('show', { left : e.pageX, top : e.pageY }); } }); }); java后端: @RequestMapping("/list") @ResponseBody public Object list(Integer id,Integer page, Integer rows,ProductProperty productProperty) { EntityWrapperwrapper = new EntityWrapper<>(); if (BaseUtil.isEmpty(id)) { wrapper.where("pp.parent_id={0}", id); return productPropertyService.list(wrapper); }else { wrapper.isNull("pp.parent_id"); } if (BaseUtil.isEmpty(productProperty.getNumber())) { wrapper.like("p.number", productProperty.getNumber().trim()); } if (BaseUtil.isEmpty(productProperty.getProductName())) { wrapper.like("p.name", productProperty.getProductName().trim()); } PagepPage = productPropertyService.page(new Page(page, rows), wrapper); DataGriddataGrid = new DataGrid<>(pPage.getTotal(), getState(pPage.getRecords())); return dataGrid; } 关键还是在后台,注意 返回:public Object list(Integer id,Integer page, Integer rows,ProductProperty productProperty) { 传过来的id 等于零 那就是分页 大于零 那就是去访问子节点。 还要注意实体: private ListgetState(Listmodules) { for (ProductProperty tmenu : modules) { Integer pps = productPropertyService.selectCount(new EntityWrapper().where("parent_id={0}", tmenu.getId())); if (pps>0) { tmenu.setState("closed"); }else { tmenu.setState("open"); } } return modules; } /** * * @ClassName: DataGrid * @Description: easyui数据封装 * @author weir * @date 2016年11月10日 下午2:32:25 * * @param*/ public class DataGrid{ private int total = 0; private Listrows = new ArrayList(); /** * * 产品规格 * * * @author weir * @since 2017-03-02 */ @TableName("product_property") public class ProductProperty extends Model{ private static final long serialVersionUID = 1L; /** * 产品规格ID */ private Integer id; /** * 产品ID */ @TableField("product_id") private Integer productId; /** * 名称 */ private String name; /** * 父ID */ @TableField("parent_id") private Integer parentId; /** * 单价 */ private Double price; /** * 别名 */ private String alias; /** * 创建者 */ private Integer creator; /** * 创建时间 */ private Date createtime; /** * 修改者 */ private Integer modifier; /** * 修改时间 */ private Date modifytime; /** * 产品 */ @TableField(exist=false) private String productName; /** * 产品编码 */ @TableField(exist=false) private String number; /** * 子节点集合 */ @TableField(exist=false) private ListproductProperties; /** * 树节点状态 */ @TableField(exist=false) private String state; 这里需要注意的是 id、name、parentId、state 这几个比较重要。 看起来一点都不难,官网也没有说明这几个点,所以记录一下,让大家方便使用。