javascript - Sencha 中的树面板复选框

标签 javascript extjs sencha-touch treepanel

我遇到了 Sencha 树面板复选框的问题。 如果我选中子节点复选框,我想自动选中父节点的复选框。 目前我需要检查它,甚至检查子节点。

下图显示了正在发生的事情..

enter image description here

最佳答案

向包含复选框的列添加监听器:

columns: [
    {
        xtype: 'checkcolumn',
        listeners: {
            checkchange: 'onCheckcolumnCheckChange'
        }
    },
    // ....
]

然后使用此函数在检查事件上检查/取消检查父节点

onCheckcolumnCheckChange: function(checkcolumn, rowIndex, checked, eOpts) {
    var view = this.getView();
    var item = this.getStore().data.items[rowIndex];
    var columnName = checkcolumn.dataIndex;

    // User unchecked a row: refresh the view
    if(!checked){
        view.refresh();
        return;
    }

    // User checked a row: unselect all parents
    var parentNode = item.parentNode;
    while(typeof parentNode != 'undefined' && parentNode !== null && !parentNode.data.root){
        parentNode.set(columnName, false);
        parentNode = parentNode.parentNode;
    }

    // Then uncheck all childs (recusif)
    (function doChild(children){
        if(typeof children == 'undefined' || children === null || children.length <= 0)
            return;

        for(var i=0; i<children.length; i++){
            children[i].set(columnName, false);
            doChild(children[i].childNodes);    // <= recursivity
        }
    })(item.childNodes);

    view.refresh();
}

关于javascript - Sencha 中的树面板复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43202488/

相关文章:

extjs - Ext.Ajax.request() 在请求成功时调用失败回调函数

extjs - 如何从商店 sencha touch 为图表提供动态轴的最小值和最大值

javascript - 获取已执行规范文件的文件名

javascript - JSX 中的多行电子邮件正文

extjs - 我们可以避免在 Model 中设置额外的字段吗?

java - Sencha CMD 7 dockerfile失败,具有非法反射访问

extjs - 如何保存 Extjs4 图表图像以在 pdf 报告中打印?

javascript - 如何使用 ngFor 循环复选框,以便它在 angular2 中拥有自己的索引?

javascript - 页面初始加载后加载 jQuery 库

extjs - sencha 创建 jsb -a ./app.html -p ./app.jsb3