Pregunta

I have a tree panel which is being dynamically generated based on server data. Below is the code to generate tree panel and add it to a form.

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

        for (var i = 0; i < Object.keys(temp.MENUS).length; i++) {

            for (var key in temp.MENUS[i]) {

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

                    item = {
                        "text": temp.MENUS[i][key][n],
                            "checked": false,
                            "id": key + "_" + temp.MENUS[i][key][n],
                            "name": key + "_" + temp.MENUS[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": "Service Quality",
                "expanded": true,
                "formBind": true,
                "children": module
        };

        Ext.getCmp('permissionsTreePanel').setRootNode(obj);

    },
    failure: function (result, request) {
        Ext.Msg.alert('Error', 'An Error occured...');
    }
});

I have to check the nodes of tree panel based on server data i am receiving like this:

{"PERMISSIONS":{"GROUP_ADMIN":"false","OPERATIONS_MSU":"true","OPERATIONS_SCHEDULE":"false","OPERATIONS_MARKET_DASHBOARD":"false","OPERATIONS_FE_REFERENCE":"true","PRODUCTION_QUICKQC_VOICE":"false","PRODUCTION_QUICKQC_DATA":"false","PRODUCTION_MARKETQC_VOICE":"false","PRODUCTION_MARKETQC_DATA":"false","PRODUCTION_SURGERY":"false","PRODUCTION_FILE_INVENTORY":"false","PRODUCTION_MARKET_TRACKER":"false","PRODUCTION_DRIVE_ROUTE_TRACKER":"false","PRODUCTION_TICKETS":"false","PRODUCTION_ASSETS":"false","MANAGEMENT_DAILY_STATUS":"false","MANAGEMENT_DAILY_PROCESSING":"false","MANAGEMENT_WEEKLY_WORKFLOW":"false","MANAGEMENT_CUSTOMER_QUESTIONS":"false","MANAGEMENT_KPI_PERFORMANCE_METRICS":"false","MANAGEMENT_COLLECTION_METRICS":"false","MANAGEMENT_OPERATIONS_DASHBOARD":"false","MANAGEMENT_PRODUCTION_DASHBOARD":"false","MANAGEMENT_SUPPORT_DASHBOARD":"false","MANAGEMENT_REVENUE_TRACKER":"false","MANAGEMENT_DEPLOYMENT_TRACKER":"false","SUPPORT_TICKETS":"false","SUPPORT_ASSET_MANAGEMENT":"false","SUPPORT_GENERATE_SHIPMENT":"false","TRAINING_RESOURCES":"false","TRAINING_SCHEDULE":"false"}}

The Tree panel: enter image description here

Please help me in getting tree panel nodes checked through server data.

Help will be appreciated!

Thanks Much :)

¿Fue útil?

Solución

Can't you set the permissions serverside?

Anyway, you can use the successcallback from the "permissions" request. You can loop through the permissions and then get the treenodes by Id:

var treepanel = Ext.getCmp('permissionsTreePanel');
var treestore = treepanel.getStore();
var node = treestore.getNodeById('GROUP_ADMIN'); //current permission key
node.set('checked', true); // current permission value
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top