动态extjs树面板生成问题

阿南德·辛格(Anand Singh)

我有一个树面板,我会根据在组合框中选择的组动态为其生成根节点。根据选择的组,在遍历JSON对象之后,将从服务器返回JSON。我正在生成树面板的节点。如果选择``MM'',则它是所有其他组的父组。根节点将是“移动测量”,其所有子节点将是其他组。

在此处输入图片说明

var groupKey = field.getValue();
var groupName = field.getRawValue();
var subGroupName = '';
var treePanel = Ext.getCmp('permissionsTreePanel');
var len = [];
treePanel.setRootNode(null);

if(newValue){
Ext.Ajax.request({
    url:'.../GetAllUserPermissions.php',
    method:'POST',
    params:{groups:newValue},
    success:function(result, request){
        var json = result.responseText;
        var temp = Ext.decode(json);
        var obj = {};
        var mainGroup = {};
        var item = {};
        var menu = {};
        var children = [];
        var subGroups =[];
        var groups = '';
        var module = [{
            "text": "Administrator",  
            "leaf": true,
            "checked": false,
            "id":"GROUP_ADMIN",
            "formBind": true,
        "name":"GROUP_ADMIN"}];

        //Ext.Msg.alert('Message',Ext.encode(temp[groupKey]));

        groupTree = function (group,name) {

            for(var i=0;i<Object.keys(group).length;i++){
                for(var key in group[i]){
                    for(var n=0;n<Object.keys(group[i][key]).length;n++){
                        item = {  
                            "text": group[i][key][n],
                            "checked": false,
                            "id": key+"_"+group[i][key][n],
                            "name": key+"_"+group[i][key][n],
                            "formBind":true,
                            "leaf": true  
                        };
                        children.push(item);
                    }
                    menu = {"text": key,  
                        "leaf": false,
                        "id": key,
                        "children": children                        
                    };

                    module.push(menu);
                    children = [];   
                }
            }

            obj = {"text":name,
                "expanded": true,
                "formBind": true,
                "children": module
            };

            module = [{
                "text": "Administrator",  
                "leaf": true,
                "checked": false,
                "id":"GROUP_ADMIN",
                "formBind": true,
            "name":"GROUP_ADMIN"}];

            return obj;

        };

        if(groupKey != 'MM'){

            groupTree(temp[groupKey],groupName);
            treePanel.setRootNode(obj);

        } else {

            treePanel.getRootNode().set("text",groupName);               

            var i = 0;

            for(var key in temp[groupKey]){

                i++;

                mainGroup = groupTree(temp[groupKey][key],key);

                obj = {};

                treePanel.getRootNode().appendChild(mainGroup);

                if(i==2){
                    //break;
                }
            }

            treePanel.getRootNode().expand();

            //treePanel.setRootNode(subGroups);

            Ext.Msg.alert('Message',Ext.encode(subGroupName));

        }
    },
    failure:function(result, request){
    }
}); } else {
Ext.Msg.alert('Message','No value is selected!'); }

已生成组,但事件无法正常进行。项目选择和事件分发存在一些错误。通过单击一个节点,另一个节点将得到扩展。这些未知行为导致树面板出现问题。

您的帮助将不胜感激!

提前致谢。:)

阿南德·辛格(Anand Singh)

我得到了答案。生成的每个节点的ID均存在问题。对于多个模块节点,模块级节点具有相同的ID。这就是为什么我有异常行为。现在,删除ID后它可以正常工作。

var groupKey = field.getValue(),
groupName = field.getRawValue(),
subGroupName = '',
treePanel = Ext.getCmp('permissionsTreePanel'),
len = [];

treePanel.setRootNode(null);

if (newValue !== null) {
Ext.Ajax.request({
    url: '.../SOUPAPI/user/GetAllUserPermissions.php',
    method: 'POST',
    params: {
        groups: newValue
    },
    success: function (result, request) {
        var json = result.responseText,
            temp = Ext.decode(json),
            obj = {},
            mainGroup = {},
            item = {},
            menu = {},
            children = [],
            subGroups = [],
            groups = '',
            module = [{
                "text": "Administrator",
                "leaf": true,
                "checked": false,
                "formBind": true,
                "name": "GROUP_ADMIN"
            }];

        groupTree = function (group, name, gkey) {

            for (var i = 0; i < Object.keys(group).length; i++) {
                for (var key in group[i]) {
                    for (var n = 0; n < Object.keys(group[i][key]).length; n++) {

                        item = {
                            "text": (group[i][key][n]).split("_").join(" "),
                            "checked": false,
                            "id": key + "_" + group[i][key][n],
                            "name": key + "_" + group[i][key][n],
                            "formBind": true,
                            "leaf": true
                        };
                        children.push(item);
                    }
                    menu = {
                        "text": key.substring(2),
                        "leaf": false,
                        "name": key,
                        "children": children
                    };

                    module[0].id = gkey + "GROUP_ADMIN";
                    module.push(menu);
                    children = [];
                    menu = {};

                    test = module;
                }
            }

            obj = {
                "text": name,
                "expanded": true,
                "formBind": true,
                "children": module
            };

            module = [{
                "text": "Administrator",
                "leaf": true,
                "checked": false,
                "formBind": true,
                "name": "GROUP_ADMIN"
            }];

            return obj;

        };

        if (groupKey != 'MM') {

            var group = groupTree(temp[groupKey], groupName, groupKey);
            treePanel.setRootNode(obj);

        } else {

            var rootNode = treePanel.getRootNode();
            rootNode.set("text", groupName);
            for (var key in temp[groupKey]) {

                mainGroup = groupTree(temp[groupKey][key], key, key);
                obj = {};
                rootNode.appendChild(mainGroup);
            }

            rootNode.cascadeBy(function () {
                for (var l in rootNode.childNodes) {
                    rootNode.childNodes[l].collapse();
                }
            });
            rootNode.expand();
        }
    },
    failure: function (result, request) {}
});
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

离子生成问题

来自分类Dev

在树面板中插入新子项的 ExtJS 问题

来自分类Dev

Visual Basic生成问题

来自分类Dev

gnuplot密钥生成问题

来自分类Dev

快速日期生成问题

来自分类Dev

PHP JSON生成问题

来自分类Dev

MVC Web API路由生成问题

来自分类Dev

Visual Studio 2013生成问题

来自分类Dev

多行舵值对Yaml生成问题

来自分类Dev

Android GCM中的通知生成问题

来自分类Dev

OpenCV生成问题Visual Studio 2013

来自分类Dev

从按钮生成问题目录

来自分类Dev

Yii2 URL生成问题

来自分类Dev

生成问题后的Adobe AIR

来自分类Dev

限制在ExtJs树面板中的拖放

来自分类Dev

extjs 5中的树面板无法渲染

来自分类Dev

ExtJS将链接放在树面板的树列中

来自分类Dev

Mac(Xamarin)上的VSTS生成代理中的生成问题

来自分类Dev

休眠一对一映射。模式生成问题

来自分类Dev

Android Chrome完整浏览器apk生成问题

来自分类Dev

Visual Studio社区2015更新1生成问题

来自分类Dev

Python 2.7 protobuf .py文件生成问题

来自分类Dev

Java中的二维条码生成问题

来自分类Dev

RSA公钥生成问题(PHP / Java集成)

来自分类Dev

十六进制生成问题从Java加密与And .NET

来自分类Dev

添加Localnotification插件后出现离子生成问题

来自分类Dev

Python 2.7 protobuf .py文件生成问题

来自分类Dev

节点 js setInterval 和 nohup 的进程生成问题

来自分类Dev

通过报告生成问题导出 Rhapsody Table View