在 sap.ui.Table 中更改行绑定模板

Change template of row binding in sap.ui.Table

我有一个 sap.ui.table.Table,我想制作 editable。在 SAPUI5 示例中,我可以看到 SAP 在 sap.m.Table 的列列表项中将 m.Texts 替换为 m.Inputs。我有一个 sap.ui.table.Table,目前我不知道如何在控制器中更改 sap.ui.table.Table 的模板。我需要的是更改列或行的模板。我在视图中进行了绑定,例如:

                        <ui:columns>
                            <ui:Column>
                                <m:Label text="label"/>
                                <ui:template>
                                    <m:Text text="{xx}"/>
                                </ui:template>
                            </ui:Column>
                        </ui:columns>

但我必须在控制器中定义模板。我试过以下:

            var oTemplateTable = new sap.ui.table.Row({
                cells: [
                    new sap.m.Text({
                        text: "{xxx}"
                    }),
                    // ... further cells per row
                ],
            });

            oTableRunC.bindRows({
                path: sBindingPathRunC,
                template: oTemplateTable
            });

但这不起作用,因为我想我没有定义固定列。 我忘了定义什么?我的目标是将 sap.ui.table.Table 与控制器中的 bindRows 方法绑定,并在同一步骤中设置模板或我的行的 ui 元素。因此,我可以实现一种编辑 table 的方法,其中我将 m.Input 元素放入行中,以及一种显示数据方法,其中 m.Texts 仅显示 table 数据可见。

要更新模板,您应该可以在控制器中设置 sap.ui.table.Column 的模板聚合,例如

var oProductNameColumn = this.byId("ProductNameColumn");
oProductNameColumn.setTemplate(new sap.m.Input({value: "{ProductName}"}));

有关更多详细信息,请参阅模板聚合的文档。 https://ui5.sap.com/#/api/sap.ui.table.Column%23aggregations