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