简体   繁体   English

SAPUI5 TreeTable 渲染问题

[英]SAPUI5 TreeTable rendering issue

I have created a case which has one xml view.我创建了一个有一个 xml 视图的案例。 This view contains a treetable with two columns此视图包含一个包含两列的树表

<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>

I populate this treetable in the controller like below:我在控制器中填充这个树表,如下所示:

    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");
        }
});

The problem is first time I open the "item1" root branch I can see one item enabled and second one disabled.问题是我第一次打开“item1”根分支时,我可以看到一个项目已启用,第二个项目已禁用。 but if I close the "item1" and open it again both fields become disabled.但是如果我关闭“item1”并再次打开它,两个字段都会被禁用。 like below pictures.像下面的图片。

First time:第一次: 在此处输入图片说明

second time:第二次:

在此处输入图片说明

Ok the answer is to use toggleOpenState function for treetable and then set rerender() each time this method is called.好的,答案是对 treetable 使用 toggleOpenState 函数,然后在每次调用此方法时设置 rerender()。

<t:TreeTable toggleOpenState="toggleOpenState"/>


toggleOpenState : function(){

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM