【问题标题】:Newly added line item is getting removed after making changes in data which is already bound to sap.m.Table更改已绑定到 sap.m.Table 的数据后,新添加的行项目将被删除
【发布时间】:2022-12-03 13:14:51
【问题描述】:

我们必须执行编辑功能,我们必须考虑两种情况:

  1. 更改现有条目。
  2. 添加新条目并更新旧条目。

    在第二种情况下,当我们尝试添加新条目时,它会添加到sap.m.Table,但如果我们对旧条目进行任何更改,那么新添加的行项目就会消失。

    let oContextLineItemEntry = oLineItmTab.getModel().createEntry("/EntityName", {
      properties: NewLineItem,
    });
    let oTmp = oLineItmTab.getBindingInfo("items").template,
    oItem = oTmp.clone();
    oItem.setBindingContext(oContextLineItemEntry);
    oLineItmTab.addItem(oItem);
    

    这里 NewLineItem 是我要添加的对象,它是空白的。它启动如下:

    NewLineItem = oLineItmTab.getItems()[0].getBindingContext().getObject();
    

    在此之后,我删除了 objects 属性的所有值。

    我尝试使用 OData V2 OneWay 绑定,但没有成功。

    我看到框架行为正在触发此交互

    1. onChange started
    2. onChange completed

      我在 SAP Community 上回答了这些问题:

【问题讨论】:

    标签: odata sapui5


    【解决方案1】:

    绑定聚合后,它将由数据绑定管理。因此,您不应尝试修改聚合。相反,在模型中进行更改,然后应根据模型中的数据更新聚合。例如

    let newRow = {key: "_your_unique_id_", value: ""};
    let model = table.getModel();
    let tableData = model.getProperty("/tableEntityName");
    tableData.unshift(newRow);
    model.setProperty("/tableEntityName", tableData);
    

    除此之外考虑设置生长表的属性为真。

    【讨论】:

      【解决方案2】:

      我们已经针对这个问题提出了一个 OSS 说明,SAP 回复说,这不是 UI 控制的问题,而是使用它的方式。 基本上我们不应该在使用 OData 绑定时添加新条目。

      【讨论】:

        猜你喜欢
        • 2015-08-06
        • 2014-08-25
        • 1970-01-01
        • 1970-01-01
        • 2015-04-12
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多