组成树菜单的数据由后台加载,其可选,可展开,是否为叶子属性后台可控制,现在问题时,数据全部加载出来,不知为何,但有两个菜单不能展开?如图:
//加载数据的方法
/**
* 1.首先根据系统管理员加载菜单列表以及末级菜单下的功能列表
* 2.根据当前角色来选中(勾选)当前拥有的菜单和功能
*/
public ActionResult getFunTreeByRid(int adminRoleId,int currentRoleId) throws Exception
{
List<Menu> firstMList=new ArrayList<Menu>();
List<Menu> secondMList=new ArrayList<Menu>();
List<Functions> thirdMList=new ArrayList<Functions>();
//一级菜单列表
firstMList = menuDAO.listRoleMenu(adminRoleId,currentRoleId,"Y", "N");
List<RolesTreeNode> menuTree=new ArrayList<RolesTreeNode>();
for(int i=0;i<firstMList.size();i++)
{
Menu m1 = (Menu) firstMList.get(i);
RolesTreeNode node = new RolesTreeNode(m1.getMenuName(),m1.getId().toString(),
null,true,false,m1.isChecked());
//二级级菜单列表
secondMList = menuDAO.listSubRoleMenu(adminRoleId,currentRoleId,m1.getId(),"N", "Y");
for(int j=0;j<secondMList.size();j++)
{
Menu m2 = (Menu) secondMList.get(j);
RolesTreeNode node2 = new RolesTreeNode(m2.getMenuName(),m2.getId().toString(),
null,true,false,m2.isChecked());
//末级菜单下的功能(根据菜单id查询此菜单下的功能)
thirdMList = functionsDAO.listFuncs(adminRoleId, currentRoleId, m2.getId());
for (int k=0;k<thirdMList.size();k++)
{
Functions f = (Functions) thirdMList.get(k);
RolesTreeNode node3 = new RolesTreeNode(f.getFuncName(),f.getId().toString(),
null,false,true,f.isChecked());
node2.getChildren().add(node3);
}
node.getChildren().add(node2);
}
menuTree.add(node);
}
result.setMessage(ExtHelper.getJsonFromArray(menuTree));
return result;
}
//控制树节点的java类部分代码
private String text;
private String iconCls;
private String id;
private boolean expanded;
private boolean leaf;
private boolean checked;
private List<RolesTreeNode> children = new ArrayList<RolesTreeNode>();
public RolesTreeNode() {}
//树菜单文字,树菜单id,树菜单图标,是否展开,是否叶子,是否勾选
public RolesTreeNode(String text,String id,String iconCls,boolean expanded,boolean leaf,boolean checked) {
this.text = text;
this.id = id;
this.iconCls = iconCls;
this.expanded = expanded;
this.leaf = leaf;
this.checked=checked;
}
//ext树菜单代码
//功能列表设置--win
var rolesTreeloader = new Ext.tree.TreeLoader({});//加载数节点
var roles_tree = new XTreePanel({
iconCls: 'content',
title : '角色功能设置',
id: 'tree-panel1',
layout: 'fit',
region:'west',
rootVisible: false,
lines: false,
singleExpand: true,
useArrows: true,
loader : rolesTreeloader,
root: new Ext.tree.AsyncTreeNode(),
autoScroll: true,
split:true,
margins: '2 0 2 5',
width: 450,
minSize: 530,
collapsible: true,//,
listeners: {
'checkchange': function(node, checked){selParent(node, checked);selChild(node, checked);}
}
});
相关推荐
在描述中提到的"Ext TreePanel Checked Ext复选框树"是指`TreePanel`的一种特殊形式,它扩展了基本的树视图,加入了复选框功能。 复选框树(Checked Tree)允许用户通过复选框来选择或取消选择树结构中的节点。这种...
5. **扩展和插件**:如果默认的树形菜单功能无法满足需求,可以利用Ext JS的可扩展性,开发自定义插件或扩展已有的组件。 6. **CSS样式**:通过CSS,你可以调整树形菜单的外观,包括节点的字体、颜色、边框、背景等...
由于项目的需要最近在学习ext,在项目中必不可少用到了tree,并且要对tree进行增、改、删的操作。上网找了很多不错的学习资料把这些功能组织在一起。在学习ext的过程中花了不少时间,我想很多网友刚开始学习ext的...
2. **复选框(check)**:在每个节点上添加复选框,用户可以通过勾选或取消勾选来选择或取消选择节点。这些选择状态可以传递到其子节点,实现级联效果。 3. **级联行为**:当一个节点被选中或取消选中时,其所有子...
1. **选择模式**:EXT树支持多种选择模式,例如`single`(单选)、`multi`(多选)和`checkable`(可勾选)。通过设置`selModel`属性,可以改变树的默认选择行为。例如,`selModel: { type: 'checkbox' }`将启用勾选...
iconCls: 'someIconClass' // 可选,为节点设置图标类 }); ``` 4. **插入节点** 插入新节点有两种方式: - **插入到指定位置**:使用`insertNode`方法,需要提供父节点、新节点及插入位置的索引。 ```...
要实现单选功能,ComboBoxTree可能使用了Ext.selection.Model类,通过配置singleSelect选项来限制用户只能选择一个节点。单击一个节点时,其他已选中的节点将被自动取消选中。这在需要用户做出唯一选择的场景中非常...
节点可以通过配置对象创建,包括文本、图标、是否可选以及子节点等属性。 2. **模型(TreeModel)**:树的数据模型定义了树中节点的结构和字段。它可以是简单的数组,也可以是Ext.data.TreeStore,它继承自Ext.data...
在权限管理中,EXT树经常需要配合复选框功能,以便用户可以选择或取消选择节点。EXT提供了`CheckboxNodeUI`来实现这一特性,每个节点都可以关联一个复选框。在Faceye的示例中,当节点的复选框状态改变时,会触发`...
通过设置`draggable`、`droppable`等属性,可以实现节点拖放功能,创建可交互的树形结构。 10. **UI样式** ExtJS提供了丰富的样式配置,可以通过修改CSS或使用预定义的主题来自定义树的外观。 总结,结合ExtJS和...
EXT Tree 是一个强大的JavaScript组件,它是EXT JS框架的一部分,用于构建可交互的树形数据结构。EXT Tree在网页中常用于展示层次结构的数据,如文件系统、组织结构或导航菜单等。EXT Tree提供了丰富的功能,包括...
你需要配置TreePanel,包括指定数据源(通常是XML的URL),定义节点的模型(包括字段名和类型),以及设置树的其他属性,如是否可展开、是否有复选框等。 5. 加载和显示:最后,通过EXT的API加载XML数据,将树渲染...
你需要定义每个节点的数据,包括文本、图标、是否可选中等属性。 ```javascript var node = { text: '父节点', children: [ { text: '子节点1' }, { text: '子节点2', leaf: true } // leaf属性设为true表示此...
- `Checkable`: 这个属性用来指定节点是否可被选中,设置为`true`即显示复选框。 - `ThreeState`: 如果设置为`true`,那么节点可以处于已选、未选和部分选(灰色)三种状态,适用于多级选择逻辑。 - `...
EXT.tree.Panel是树的基础,EXT.tree.View负责渲染节点,EXT.tree.NodeInterface定义了树节点的行为。EXT.tree.Column用于设置树节点列的显示,EXT.tree.LoadMask可以在加载数据时显示遮罩。 4. **独立文件和注释**...
6. **可定制性**:为了适应不同的需求,复选树可能需要提供一些可配置选项,比如自定义节点样式、节点展开/折叠行为、多选模式等。 在实际应用中,你可以根据“好用的复选树源码改进版”提供的代码进行二次开发,以...
3. 定义TreeNode:设置每个节点的属性,如文本、图标、是否可选等。 4. 创建Tree Panel:作为Tree的容器,可以配置各种属性,如宽度、高度、是否允许拖放等。 5. 链接Store和Nodes:将Tree Store与TreeNode绑定,...
6. **CheckColumn**:用于创建包含复选框的列,可以用于选择或标记树的节点。 7. **Editor**:在`EditorGridPanel`中,用于配置列的编辑器,如`TextField`,可以设定是否允许空白(`allowBlank`)等。 8. **有效性...
4. **Tree**:EXT的树形组件用于展示层次结构的数据,支持动态加载、拖放操作和节点的展开/折叠。 5. **Tab Panel**:通过Tab Panel,可以创建带有多个标签页的应用界面,每个标签页可以包含不同的组件或面板。 6....
- TreeEditor 可接受两个可选参数:一个用于配置编辑字段,另一个用于配置 TreeEditor 本身。 - 编辑字段可以是 TextField 的配置对象,也可以是已创建的表单字段实例,如 NumberField 或 DateField。 - ...