Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sencha中的树面板复选框_Javascript_Extjs_Sencha Touch_Treepanel - Fatal编程技术网

Javascript Sencha中的树面板复选框

Javascript Sencha中的树面板复选框,javascript,extjs,sencha-touch,treepanel,Javascript,Extjs,Sencha Touch,Treepanel,我发现sencha树面板复选框有问题。 如果我选中子节点复选框,我想自动选中父节点复选框。 目前我需要检查它,即使子节点已检查 下图显示了正在发生的情况 将侦听器添加到包含复选框的列中: columns: [ { xtype: 'checkcolumn', listeners: { checkchange: 'onCheckcolumnCheckChange' } }, // .... ] 然后使用

我发现sencha树面板复选框有问题。 如果我选中子节点复选框,我想自动选中父节点复选框。 目前我需要检查它,即使子节点已检查

下图显示了正在发生的情况


将侦听器添加到包含复选框的列中:

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();
}
onCheckcolumnCheckChange:函数(checkcolumn、rowIndex、checked、eOpts){
var view=this.getView();
var item=this.getStore().data.items[rowIndex];
var columnName=checkcolumn.dataIndex;
//用户取消选中行:刷新视图
如果(!选中){
view.refresh();
返回;
}
//用户选中了一行:取消选择所有父项
var parentNode=item.parentNode;
while(typeof parentNode!=“未定义”&&parentNode!==null&&parentNode.data.root){
parentNode.set(columnName,false);
parentNode=parentNode.parentNode;
}
//然后取消选中所有子项(recusif)
(儿童){

如果(typeof children==“undefined”| | children===null | | | children.length将侦听器添加到包含复选框的列中:

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();
}
onCheckcolumnCheckChange:函数(checkcolumn、rowIndex、checked、eOpts){
var view=this.getView();
var item=this.getStore().data.items[rowIndex];
var columnName=checkcolumn.dataIndex;
//用户取消选中行:刷新视图
如果(!选中){
view.refresh();
返回;
}
//用户选中了一行:取消选择所有父项
var parentNode=item.parentNode;
while(typeof parentNode!=“未定义”&&parentNode!==null&&parentNode.data.root){
parentNode.set(columnName,false);
parentNode=parentNode.parentNode;
}
//然后取消选中所有子项(recusif)
(儿童){

如果(typeof children=='undefined'| | children===null | | | children.length实际上我正在使用ajax调用及其返回的Json数据从数据库中获取树面板的父级和子级数据,我用它来形成树面板。那么我应该将函数和代码放在哪里?@VikasHire将函数放在包含pProperty
defaultListenerScope:true
我在未捕获类型错误时收到此错误:this.getView不是function@VikasHire
这个
是对
树面板
的引用。实际上,我使用ajax调用及其返回的Json数据从数据库中获取树面板的父级和子级数据,我使用这些数据来形成树面板。那么我应该将函数和代码放在何处?@VikasHire只需将函数放在包含属性
defaultListenerScope:true
的主容器中,我收到了未捕获的错误类型错误:this.getView不是function@VikasHire
是对
树面板的引用。