ext树形列表

效果



页面
var smDevCat = Ext.create('Ext.selection.CheckboxModel', { mode: 'single'});
var gridDevCat = Ext.create('Ext.tree.Panel', {
    region: 'center',
    margins: '0 3 0 3',
    store: storeDevCat,
    split: true,
    columnLines: true,
    preventHeader: true,
    rootVisible: false,
    selModel: smDevCat,
    dockedItems: [tbar],
    columns: [
        { header: '类别代码', dataIndex: 'udevcatcode',xtype:'treecolumn',sortable:false, titleAlign:'center',width:130 },
        { header: '类别名称', dataIndex: 'udevcatname',  align: 'center',width:130 },
        { header: '父类别代码', dataIndex: 'fudevcatcode',  align: 'center',width:130 },
        { header: '备注', dataIndex: 'note',  align: 'center',width:130 },
        { header: '创建时间', dataIndex: 'createtime',  align: 'center',width:130 },
        { header: '创建人', dataIndex: 'createuserid',  align: 'center',width:130 },
        { header: '记录最后修改时间', dataIndex: 'lastopertime',  align: 'center',width:130 },
        { header: '记录最后修改人', dataIndex: 'lastoperuserid',  align: 'center',width:130 }
    ],
    viewConfig:{
        enableTextSelection:true
    }
});

数据请求
<%=jsjx.smart.web.controller.HomeController.extModel("TUDevCategory", "DevCategoryModel", "createtime,lastopertime")%>
var storeDevCat = Ext.create('Ext.data.TreeStore', {
    autoLoad: true,
    model: 'DevCategoryModel',
    folderSort: false,
    rootProperty:{
        expanded:true
    },
    proxy: {
        type: 'ajax',
        url: 'TUDev/loadTUDevCat',
        reader: {
            type: 'json'
        }
    }
});

后台处理
@RequestMapping("/loadTUDevCat")
public void loadTUDevCat(HttpServletResponse response) {
    Print print = new Print();
    List<TUDevCategory> allUDevCategorys = tuDevService.loadAllUDevCategory();
//加载所有数据,然后过滤出根目录
 List<TUDevCategory> tuDevCategories = allUDevCategorys.stream().filter(x -> x.getFudevcatcode() == null || x.getFudevcatcode().equals("")).collect(Collectors.toList());
    List<Map<String, Object>> rightDataTree = getCateChildren(allUDevCategorys, tuDevCategories);
    print.WriteJson(response, rightDataTree);
}
//根据根目录遍历,查找出子列表,运用递归调用查询子列表的子列表一直查到没有子列表
private List<Map<String, Object>> getCateChildren(List<TUDevCategory> listAll, List<TUDevCategory> pList) {
    List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
    for (TUDevCategory tuDevCategory : pList) {
        Map<String, Object> child = new HashMap<String, Object>();
        child.put("udevcatcode", tuDevCategory.getUdevcatcode());
        child.put("udevcatname", tuDevCategory.getUdevcatname());
        child.put("fudevcatcode", tuDevCategory.getFudevcatcode());
        child.put("url", tuDevCategory.getUrl());
        child.put("note", tuDevCategory.getNote());
        child.put("createtime", tuDevCategory.getCreatetime());
        child.put("createuserid", tuDevCategory.getCreateuserid());
        child.put("lastopertime", tuDevCategory.getLastopertime());
        child.put("lastoperuserid", tuDevCategory.getLastoperuserid());
        child.put("icon",StringUtils.isNotBlank(tuDevCategory.getUrl()) ? tuDevCategory.getUrl() : "/extjs/icons/fam/cog.png");
        List<TUDevCategory> childList = listAll.stream().filter(x -> x.getFudevcatcode() != null && StringUtils.equals(x.getFudevcatcode(), tuDevCategory.getUdevcatcode())).collect(Collectors.toList());
        if (childList != null) {
            child.put("children", getCateChildren(listAll, childList));
            child.put("leaf", false);
        } else {
            child.put("leaf", true);
        }
        list.add(child);
    }
    return list;
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在ExtJS中实现带有分页查看功能的树形菜单,您可以使用Ext.tree.Panel组件和Ext.PagingToolbar组件。 首先,您需要创建一个Ext.tree.Panel组件来显示树形菜单。在这个组件中,您将使用Ext.data.TreeStore来加载并显示数据。在TreeStore中,您可以设置每个节点的属性,例如节点ID,文本和图标。 接下来,您需要创建一个Ext.PagingToolbar组件来为树形菜单添加分页按钮。您可以将这个组件放在树形菜单下方,让用户可以方便地浏览大量的节点。 最后,您需要设置分页逻辑。当用户点击分页按钮时,您需要重新加载树形菜单的数据,并设置每页显示的节点数量。 下面是一个示例代码片段,演示如何创建带有分页查看功能的树形菜单: ```javascript // 创建一个树形菜单 var tree = Ext.create('Ext.tree.Panel', { store: Ext.create('Ext.data.TreeStore', { root: { expanded: true, children: [ { text: 'Node 1', leaf: true }, { text: 'Node 2', leaf: true }, { text: 'Node 3', leaf: true }, { text: 'Node 4', leaf: true }, { text: 'Node 5', leaf: true }, { text: 'Node 6', leaf: true }, { text: 'Node 7', leaf: true }, { text: 'Node 8', leaf: true }, { text: 'Node 9', leaf: true }, { text: 'Node 10', leaf: true }, { text: 'Node 11', leaf: true }, { text: 'Node 12', leaf: true }, { text: 'Node 13', leaf: true }, { text: 'Node 14', leaf: true }, { text: 'Node 15', leaf: true } ] } }), rootVisible: false, useArrows: true, frame: true, border: false, width: 400, height: 400, bbar: { xtype: 'pagingtoolbar', store: Ext.create('Ext.data.Store', { fields: ['text'], data: [ { text: 'Page 1' }, { text: 'Page 2' }, { text: 'Page 3' }, { text: 'Page 4' }, { text: 'Page 5' } ] }), displayInfo: true } }); // 将树形菜单添加到页面中 Ext.create('Ext.container.Viewport', { layout: 'fit', items: [tree] }); ``` 这段代码将创建一个带有15个叶子节点的树形菜单,并为其添加了一个分页工具栏。当用户单击分页按钮时,树形菜单将重新加载以显示相应的节点。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值