Extjs4 TreePanel的CheckBox列选中有关问题

Extjs4 TreePanel的CheckBox列选中问题
效果图:Extjs4 TreePanel的CheckBox列选中有关问题
实现效果:选中后面操作权限中任意一个CheckBox,树前面的CheckBox要被选中,取消后面所有的CheckBox,树前面的CheckBox才被取消。
遇到问题:调试中发现,树的Checked属性赋值了,但是显示出来跟赋值不一样。赋值是在以下代码renderer方法中。
代码展示:

Ext.onReady(function () {
    Ext.define("SmartPermission", {
        extend: "App.BaseModel",
        fields: [
            { name: "PermissionName", type: "string" },
            { name: "ParentIdx", type: "int" },
            { name: "Description", type: "string" },
            { name: "AddAction", type: "boolean" },
            { name: "EditAction", type: "boolean" },
            { name: "DelAction", type: "boolean" }
        ]
    });
    var treeStore = Ext.create("Ext.data.TreeStore", {
        proxy: {
            type: 'ajax',
            url: "/Demo/TreePanelDemo/GetPermissionData"
        },
        sorters: [
            { property: 'SortOrder', direction: 'ASC' }
        ],
        model: "SmartPermission"
    });

    var viewport = Ext.create("Ext.container.Viewport", {
        layout: "fit",
        items: [
            {
                xtype: "treepanel",
                itemId: "userInRoleTree",
                rootVisible: false,
                store: treeStore,
                columns: [
                    {
                        xtype: "treecolumn",
                        text: "权限名称",
                        dataIndex: "PermissionName",
                        flex: 4
                    },
                    {
                        text: "角色操作权限",
                        align: 'center',
                        columns: [
                            {
                                xtype: "checkcolumn",
                                text: "添加",
                                align: 'center',
                                dataIndex: 'AddAction',
                                renderer: function (val, m, rec) {
                                    if (!rec.get('leaf')) {
                                        return '';
                                    }
                                    else {
                                        return (new Ext.grid.column.CheckColumn).renderer(val);
                                    }
                                },
                                flex: 1
                            },
                            {
                                xtype: 'checkcolumn',
                                text: "编辑",
                                align: 'center',
                                dataIndex: 'EditAction',
                                renderer: function (val, m, rec) {
                                    if (!rec.get('leaf')) {
                                        return '';
                                    }
                                    else {
                                        return (new Ext.grid.column.CheckColumn).renderer(val);
                                    }
                                },
                                flex: 1
                            },
                            {
                                xtype: "checkcolumn",
                                text: "删除",
                                align: 'center',
                                dataIndex: 'DelAction',//数据源中的状态列
                                renderer: function (val, m, rec) {
                                    if (!rec.get('AddAction') && !rec.get('EditAction') && !rec.get('DelAction')) {
                                        rec.data.checked = false;
                                    }
                                    else {
                                        rec.data.checked = true;
                                    }
                                    if (!rec.get('leaf')) {
                                        return '';
                                    }
                                    else {
                                        return (new Ext.grid.column.CheckColumn).renderer(val);
                                    }

                                    
                                },
                                flex: 1
                            }
                        ],
                        flex: 3
                    }
                ],
                tbar: [
                    { xtype: "button", text: "保存", iconCls: "qicon-select", handler: fnAddEdit },
                    { xtype: "button", text: "移除", iconCls: "qicon-remove" }
                ]
            }
        ]
    });

    function fnAddEdit(btn, event) {
        var selectNode = viewport.down("treepanel").getChecked();
        alert(selectNode );
    }
});

求助大侠们!
------解决思路----------------------
Extjs4 TreePanel的CheckBox列选中有关问题
我是刚开始写前台的,顺便查了一下 xtype: checkcolumn

我在想是不是你调用的方法错了,按你的需求不应该是调用checkchange吗?
------解决思路----------------------
event 
checkchange( this, rowIndex, checked, eOpts )