javascript - sapui5 sap.m.table 如何在单击添加行按钮时将输入添加为列

标签 javascript sapui5

我在 sap.m.Table 中有一个小要求。最初,我创建了一个如下表..

                          <Table id="reqTable" mode="MultiSelect">
                                                <columns>
                                                    <Column minScreenWidth="Tablet" demandPopin="true" hAlign="Center">
                                                        <Text text="{i18n>startDate}"/>
                                                    </Column>
                                                    <Column minScreenWidth="Tablet" demandPopin="true" hAlign="Center">
                                                        <Text text="{i18n>endDate}"/>
                                                    </Column>
                                                </columns>
                                                <items>
                                                    <ColumnListItem>
                                                        <cells>
                                                            <Text text="12/08/2002"/>
                                                            <Text text="13/09/2002"/>                                                           
                                                        </cells>
                                                    </ColumnListItem>
                                                </items>
                                            </Table>

现在,如果我单击“添加按钮”,我需要将 sap.m.Input 添加到列中,但我在中得到 NaN/NaN/NaN新列而不是 sap.m.Input。请查看下图enter image description here

在上图中,如果您看到的话,我需要 sap.m.Input 而不是 NaN,并且它必须是可编辑的。 我正在尝试使用下面的代码,但它不起作用..

onAdd: function() {
            var table = this.getView().byId("reqTable");
            var itemRow = {
                StartDate: new sap.m.Input(),
                EndDate: new sap.m.Input(),
                editable: true,
                LeaveType: ""
            };

            var oModel = this.getView().getModel('userInfoTableModel').getData();

            oModel.push(itemRow);

            this.getView().getModel('userInfoTableModel').setData(oModel);
        }

有人可以帮我让它工作吗?

提前谢谢

最佳答案

您必须使用工厂模板。

<Table id="idProductsTable"
          mode="SingleSelectMaster"
          growing="true"
          growingThreshold="5"
          selectionChange="onSelectionChange"
          updateFinished="onUpdateFinished"
          items="{
                       path: '/',
                       factory: 'factoryFunc'
                  }">
            <columns>
              <Column>
                <Label text="ID" />
              </Column>
              <Column>
                <Label text="Product" />
              </Column>
              <Column>
                <Label text="Weight" />
              </Column>
              <Column>
                <Label text="Availability" />
              </Column>
            </columns>
   </Table>

在 Controller 上:

factoryFunc: function(id, context) {
        var oTemplate = new Item({
          text: "{Text}"
        });
        var oContext = context.getProperty("Control");
        if (oContext == "C") {
          return new ColumnListItem({
            cells: [new Text({
                text: "{ProductId}"
              }),
              new Text({
                text: "{Name}"
              }),
              new Text({
                text: "{Weight}"
              }),
              new Text({
                text: "{Availability}"
              })
            ]
          })
        }else if (oContext == "N") {
          return new ColumnListItem({
            cells: [new Text({
                text: "{ProductId}"
              }),
              new Text({
                text: "{Name}"
              }),
              new Text({
                text: "{Weight}"
              }),
              new Input({
                value: "{Availability}"
              })
            ]
          })
        }

}

更多关于Sap Blog , Plunker

关于javascript - sapui5 sap.m.table 如何在单击添加行按钮时将输入添加为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50947692/

相关文章:

javascript - 如果两个 bool 值都为 true,则返回 true,但也可以为空或不存在

javascript - Sapui5 中的布局,带有表单和网格表

datepicker - UI5中如何只输入月份和年份?

error-handling - 创建通话后显示后端错误消息

javascript - 如何获取 SAPUI5 Explored 样式?

javascript - 无法使用 Babel 和 Webpack 在浏览器中加载 ReactJS 资源

javascript - jQuery addClass 之后/之前

javascript - 无法在两个 Python aiortc 脚本之间完全建立 ICE 连接

javascript - 在 NodeJS 中使用和更新全局变量安全吗?

javascript - 使用 JSDOM 模拟上线/下线