Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.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
Css 树选择SAPUI5(带有复选框)。选中父节点时自动检查子节点_Css_Tree_Sapui5 - Fatal编程技术网

Css 树选择SAPUI5(带有复选框)。选中父节点时自动检查子节点

Css 树选择SAPUI5(带有复选框)。选中父节点时自动检查子节点,css,tree,sapui5,Css,Tree,Sapui5,我有一个具有MultiSelect模式的树元素,它在每个树项中都带有复选框,看起来很不错。我想这样做,如果我选择一个项目,它的所有子项也会被选中。我在视图中看到了树: <Tree selectionChange="onPress" itemPress="onPress" includeItemInSelection="true" mode="MultiSelect" items="{path: '/'}" id="Tree"> <headerToolbar>

我有一个具有MultiSelect模式的树元素,它在每个树项中都带有复选框,看起来很不错。我想这样做,如果我选择一个项目,它的所有子项也会被选中。我在视图中看到了树:

 <Tree selectionChange="onPress" itemPress="onPress" includeItemInSelection="true" mode="MultiSelect" items="{path: '/'}" id="Tree">
    <headerToolbar> 
       <Toolbar> 
          <content> 
             <Title level="H2" text="Title"/> 
             <ToolbarSpacer/> 
          </content> 
       </Toolbar>
    </headerToolbar>
    <StandardTreeItem title="{text}"/>
 </Tree>
我想知道SAPUI5是否为它的树拥有财产,比如支票儿童或类似的东西。如果没有,我怎么做呢


谢谢。

我想到了两种方法:

使用“更好”的绑定方式。 使用JS操作是一种“更难”的方式,因为没有检索子项的方法。 我会告诉你做事情的“更好”方式。如果你真的想这样做的话,作为这个方法的扩展,你可以做“更难”的一个,我也可以添加关于如何做的信息

基本上,您需要通过添加选定标志来扩展模型。假设您具有探索示例中的典型模型结构,则可以使用以下功能:

功能addSelectedFlagaNodes,b选择{ jQuery.eachaNodes,functioniIndex,oNode{ oNode.selected=bSelected; 如果是oNode.nodes{ 添加SelectedFlagoNode.nodes,b选择; } }; } 然后,当选择更改时,您可以执行以下操作:

onSelect: function(oEvent) {
    var aItems = oEvent.getParameter("listItems") || [],
        oModel = this.getView().getModel();
    jQuery.each(aItems, function(iIndex, oItem) {
        var oNode = oItem.getBindingContext().getObject(),
            bSelected = oItem.getSelected();
        if (oNode.nodes) {
            addSelectedFlag(oNode.nodes, bSelected);
        }
    });
    oModel.refresh();
}
为项目指定模板时,还必须绑定所选内容:


我做了一个有用的JSFIDLE:

创建一个带有checkbox属性的自定义TreeNode控件,并重写sap.ui.commons.TreeRenderer类中的renderNode方法,以便在需要时显示该复选框,但sap.ui.commons.TreeNode自1.38版以来已不推荐使用