ssh+easyui 之treegrid---列表显示

第一步:建立bean类,

bean类

@Entity
@Table(name = "MCC")//数据库表名:MCC
public class MCC {
    private String id;
    private String shlb;// 商户类别
    private String lbjb;// 类别级别 1大类别 2 小类别 3商户类别名
    private String sslb;// 所属类别
    private String sxf;// 手续费
    private String mcc;// mcc值
    private String zt;// 状态
    private String lrr; // 录入人
    private String lrsj; // 录入时间
    private String xgr; // 修改人
    private String xgsj; // 修改时间

    @Id//设置主键
    @Column(length = 15)//设置列
    public String getId() {
        return id;
    }

    @Column(length = 150)
    public String getShlb() {
        return shlb;
    }

    @Column(length = 3)
    public String getLbjb() {
        return lbjb;
    }

    @Column(length = 100)
    public String getSslb() {
        return sslb;
    }

    @Column
    public String getSxf() {
        return sxf;
    }

    @Column(length = 15)
    public String getMcc() {
        return mcc;
    }

    @Column(length = 1)
    public String getZt() {
        return zt;
    }

    @Column(length = 20)
    public String getLrr() {
        return lrr;
    }

    @Column(length = 20)
    public String getLrsj() {
        return lrsj;
    }

    @Column(length = 20)
    public String getXgr() {
        return xgr;
    }

    @Column(length = 20)
    public String getXgsj() {
        return xgsj;
    }

省略set方法

2.页面显示的bean

pagebean

public class MccTreeGrid {
    private String id;
    private String shlb;
    private String sxf;
    private String mcc;
    private String lbjb;
    private String zt;
    private String lrr;
    private String lrrmc;
    private String lrsj;
    private String xgr;
    private String xgrmc;
    private String xgsj;
    private String sslb;
    private String state = "open";// open,closed异步加载必须添加该项
    private List<MccTreeGrid> children;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getShlb() {
        return shlb;
    }

    public void setShlb(String shlb) {
        this.shlb = shlb;
    }

    public String getSxf() {
        return sxf;
    }

    public void setSxf(String sxf) {
        this.sxf = sxf;
    }

    public String getMcc() {
        return mcc;
    }

    public void setMcc(String mcc) {
        this.mcc = mcc;
    }

    public String getZt() {
        return zt;
    }

    public void setZt(String zt) {
        this.zt = zt;
    }

    public String getLrr() {
        return lrr;
    }

    public void setLrr(String lrr) {
        this.lrr = lrr;
    }

    public String getLrsj() {
        return lrsj;
    }

    public void setLrsj(String lrsj) {
        this.lrsj = lrsj;
    }

    public String getXgr() {
        return xgr;
    }

    public void setXgr(String xgr) {
        this.xgr = xgr;
    }

    public String getXgsj() {
        return xgsj;
    }

    public void setXgsj(String xgsj) {
        this.xgsj = xgsj;
    }

    public List<MccTreeGrid> getChildren() {
        return children;
    }

    public void setChildren(List<MccTreeGrid> children) {
        this.children = children;
    }

    public String getLbjb() {
        return lbjb;
    }

    public void setLbjb(String lbjb) {
        this.lbjb = lbjb;
    }

    public String getSslb() {
        return sslb;
    }

    public void setSslb(String sslb) {
        this.sslb = sslb;
    }

    public String getLrrmc() {
        return lrrmc;
    }

    public void setLrrmc(String lrrmc) {
        this.lrrmc = lrrmc;
    }

    public String getXgrmc() {
        return xgrmc;
    }

    public void setXgrmc(String xgrmc) {
        this.xgrmc = xgrmc;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

3.接口实现类(省略接口类及dao层)

serviceImpl

/**
     * 获取treegrid列表
     * */
    @Transactional(propagation = Propagation.SUPPORTS)
    public List<MccTreeGrid> treegrid(Mcc mcc) {
        String hql = "from MCC t where  1 = 1 and t.lbjb = 1 ";
        List<Object> values = new ArrayList<Object>();
        hql = addWhere(mcc, hql, values);
        List<MCC> t = dao.find(hql,values);
        List<MccTreeGrid> treegrid = new ArrayList<MccTreeGrid>();
        for(MCC m:t){
            treegrid.add(treegrid(m));
        }
        
        return treegrid;
    }
/**
     * treegrid
     * */
    private MccTreeGrid treegrid(MCC m){
        MccTreeGrid t = new MccTreeGrid();
        t.setId(m.getId());
        t.setShlb(m.getShlb());
        t.setSxf(m.getSxf());
        t.setMcc(m.getMcc());
        t.setLbjb(m.getLbjb());
        t.setLrr(m.getLrr());
        t.setLrsj(m.getLrsj());
        t.setXgr(m.getXgr());
        t.setXgsj(m.getXgsj());
        t.setZt(m.getZt());
        t.setSslb(m.getSslb());
        t.setLrrmc(udao.get("from Tuser e where e.id = ? ", new Object[]{m.getLrr()}).getUsername());
        if(m.getXgr() != null && !"".equals(m.getXgr())){
            t.setXgrmc(udao.get("from Tuser e where e.id = ? ", new Object[]{m.getLrr()}).getUsername());
        }
        List<MCC> l = dao.find("from MCC t where t.sslb = ? ", new Object[]{m.getId()});
        if(l.size() > 0){
            t.setState("closed");
        }else{
            t.setState("open");
        }
        List<MccTreeGrid> children = new ArrayList<MccTreeGrid>();
        for(MCC c:l){
            MccTreeGrid tg = new MccTreeGrid();
            tg.setId(c.getId());
            tg.setShlb(c.getShlb());
            tg.setSxf(c.getSxf());
            tg.setMcc(c.getMcc());
            tg.setLbjb(c.getLbjb());
            tg.setLrr(c.getLrr());
            tg.setLrsj(c.getLrsj());
            tg.setXgr(c.getXgr());
            tg.setXgsj(c.getXgsj());
            tg.setZt(c.getZt());
            tg.setSslb(c.getSslb());
            children.add(treegrid(c));
        }
        t.setChildren(children);
        return t;
    }

4.anction的实现方法

action

/**
     * 获取treegrid
     * */
    public void treegrid(){
        super.writeJson(ms.treegrid(mcc));
    }

5.js页面

treegrid = $('#mcc_manage_treegrid').treegrid({
        url : dylan.bp() + '/mcc!treegrid.action',
        method: 'POST',
        pagination : false,            
        rownumbers:false,
        fit : true,//自适应
        fitColumns : true,
        queryParams:dylan.serializeObject(searchForm),
        nowrap : false,//单元格内容自动换行
        animate : true,
        collapsible: true,
        border : false,//无边框
        idField : 'id',//记录主键,可不写
        treeField:'shlb',
        columns : [ [ {//锁定列
            field : 'id',
            title : '主键',
            width : 100,
            checkbox : true
        }, {
            field : 'shlb',
            title : '商户类别',
            width : 480,
            align : 'left'
        },{
            field : 'sxf',
            title : '手续费',
            width : 80,
            sortable : true,
            align : 'center'
        }, {
            field : 'mcc',
            title : 'mcc值',
            width : 80,
            sortable : true,
            align : 'center'
        }, {
            field : 'zt',
            title : '状态',
            width : 80,
            sortable : true,
            align : 'center',
            formatter : function(v) {
                if (v == '0') {
                    return '无效';
                }
                return '有效';
            }
        }, {
            field : 'lrrmc',
            title : '录入人',
            width : 80,
            align : 'center'
        }, {
            field : 'lrsj',
            title : '录入时间',
            width : 130,
            align : 'center'
        }, {
            field : 'xgrmc',
            title : '修改人',
            width : 80,
            align : 'center'
        }, {
            field : 'xgsj',
            title : '修改时间',
            width : 130,
            align : 'center'
        }
        ] ],
        //treegrid异步查询
        onBeforeLoad:function(row,param){
            if(row){
                $(this).treegrid('options').url =dylan.bp() + '/mcc!treegrid.action?sslb='+row.id;
            }else{
                $(this).treegrid('options').url =dylan.bp() + '/mcc!treegrid.action';
            }
            
        },
        
        onExpand : function(row) {
            treegrid.treegrid('unselectAll');
        },
        
        onCollapse : function(row) {
            treegrid.treegrid('unselectAll');
        },
        onContextMenu : function(e,row){
            e.preventDefault();//阻止向上冒泡
            $(this).treegrid('select', row.id);
            $('#menu').menu('show',{
                left: e.pageX,
                top: e.pageY
            });
        },
        toolbar:[{
            iconCls:'icon-search',
            text : '查询',
            handler:function(){
                dylan.mcc_manage.searchForm();
            }
        },'-',{
            iconCls:'icon-add',
            text : '添加',
            handler:function(){
                dylan.mcc_manage.add();
            }
        },'-',{
            iconCls:'icon-edit',
            text : '修改',
            handler:function(){
                dylan.mcc_manage.edit();
            }
        },'-',{
            iconCls:'icon-remove',
            text : '更改状态',
            handler:function(){
                dylan.mcc_manage.remove();
            }
        },'-',{
            iconCls:'icon-add',
            text : '展开',
            handler:function(){
                dylan.mcc_manage.expand();
            }
        },'-',{
            iconCls:'icon-remove',
            text : '收起',
            handler:function(){
                dylan.mcc_manage.collapse();
            }
        },'-']
    });


    总结:

编写过程中存在的问题:

1.treegrid的异步查询,

  解决步骤 1.在pagebean的类里面添加state属性,默认为close

       2.在impl接口里面判断是否有子节点,并设置state相对应的值

       if(l.size() > 0){//l为获取子节点的列表
                t.setState("closed");//若l不为空,则设置state为closed
            }else{
                t.setState("open");
            }

       3.修改js文件,设置onBeforeLoad方法,(不能设置onBeforeExpand,否则在添加和修改子节点时,reload方法会导致页面所有元素加载为空)

        onBeforeLoad:function(row,param){
                if(row){
                    $(this).treegrid('options').url =dylan.bp() + '/mcc!treegrid.action?sslb='+row.id;
                }else{
                    $(this).treegrid('options').url =dylan.bp() + '/mcc!treegrid.action';
                }
            
            },

原文地址:https://www.cnblogs.com/flafly/p/5105293.html