javascript - SAPUI5 TreeTable 渲染问题

标签 javascript sapui5

我创建了一个具有一个 xml View 的案例。这个 View 包含一个有两列的树表

<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
        controllerName="sdf_test.App" xmlns:html="http://www.w3.org/1999/xhtml"
        xmlns:t="sap.ui.table" xmlns:var="sap.ui.comp.variants" xmlns:commons="sap.ui.commons"
        xmlns:layout="sap.ui.layout">
    <App>
        <pages>
            <Page>
                <content>
                    <t:TreeTable id="mainPageTable" rowHeight="40"
                        enableColumnReordering="false" visibleRowCount="14">
                        <t:columns>
                            <!-- <t:Column> <CheckBox /> </t:Column> -->
                            <t:Column sortProperty="landscapeName" width="400px">
                                <Label text="sample" />
                                <t:template>
                                    <Link text="{name}" enabled="{enabled}"/>
                                </t:template>
                            </t:Column>
                            <t:Column>
                                <Label text="Status" />
                                <t:template>
                                    <Text text="{nodeName}" />
                                </t:template>
                            </t:Column>
                        </t:columns>
                    </t:TreeTable>
                </content>
            </Page>
        </pages>
    </App>
</core:View>

我在 Controller 中填充这个树表,如下所示:

    onInit : function() {
                            var that = this;
                            var oView = that.getView();
                            var mainPageTable = oView.byId("mainPageTable");
                             var oData = {
                                        root:{
                                            0: {
                                                name: "item1",
                                                enabled: true,
                                                0: {
                                                    name: "subitem1-1",
                                                    enabled: true,
                                                },
                                                1: {
                                                    name: "subitem1-2",
                                                    enabled: false,
                                                }
                                            },  
                                        }
                                };
    var oModel = new sap.ui.model.json.JSONModel();
                            oModel.setData(oData);
                            mainPageTable.setModel(oModel);
                            mainPageTable.bindRows("/root");
        }
});

问题是我第一次打开“item1”根分支时,我可以看到一个项目已启用而第二个已禁用。但如果我关闭“item1”并再次打开它,两个字段都会被禁用。如下图所示。

第一次: enter image description here

第二次:

enter image description here

最佳答案

好的,答案是对 treetable 使用 toggleOpenState 函数,然后在每次调用此方法时设置 rerender()。

<t:TreeTable toggleOpenState="toggleOpenState"/>


toggleOpenState : function(){

   this.byId("mainPageTable").rerender();
}

关于javascript - SAPUI5 TreeTable 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32708765/

相关文章:

formatting - 使用 sap.ui.core.format.NumberFormat 将所有值格式化为数千

javascript - 从内部已知链接选择容器 DIV

Javascript 文本框验证正则表达式 - 多个整数(0 <= int <= 500),仅用单个空格分隔

javascript - JQuery 中未检测到单选按钮更改

javascript - Google map Places API V3 自动完成 - 限制仅允许选择堪培拉的酒店

javascript - SAPUI5 按下按钮打开链接

javascript - SAPUI5 StandardListItem 按所选排序

javascript - 这个 HTML 表示法是什么?我该如何使用它?

sapui5 - 如何在 sapui5 的 sap.m.Table 中启用滚动?

sapui5 - 未捕获的 TypeError : Fragment. 加载不是函数