【问题标题】:SAP UI5: Merge/Join two tablesSAP UI5:合并/连接两个表
【发布时间】:2019-03-06 05:54:21
【问题描述】:

我正在寻找一种方法来合并/加入 SAPUI5 中的表。 (最好使用 JavaScript)

对于第一个表,我从 excel 表上传数据(使用 SheetJS),第二个表是从 InfoObject 生成的。

现在我想根据InfoObject 表的技术键从第一个表中取出数据并将其添加到第二个表中。 (寻找一种方法来搜索匹配的技术密钥,然后相应地替换数据)

你们中有人做过这样的事吗? (我不是在要求一个完整的解决方案,只是对如何/从哪里开始等提供一些输入。)

这是上传 Excel 工作表的代码:

_import : function(file) {
        var oTable = this.getView().byId('uploadData');
        if(file && window.FileReader){
            ... code
    },

如果您需要更多信息,请告诉我,谢谢!

【问题讨论】:

  • 我很确定这不是一个好的解决方案,这就是为什么只作为评论:使用外键作为参数为连接的列应用格式化程序,然后在格式化程序中选择列数据,我希望有人可以想想更好的东西:P
  • 您好,通过阅读,我只能建议您可以对两个表使用相同的模型进行绑定,一个会更新,另一个会自动更新。与键无关,但与具有差异属性的项目有关。
  • 您是否有任何理由无法将来自两个不同来源的数据合并到一个模型中并将该模型绑定到您的表?
  • @CharalamposAnargyrou 如果我只是简单地合并,我不会考虑表格的技术关键。我想检查一些新数据是否已上传,例如键 1,如果是,则该行被覆盖,如果不是,则没有任何反应。如果上传的表包含旧表中尚不存在的键,则应附加
  • 这个不清楚。很难想象有人会认为“从第一个表中取出数据并添加到第二个表中,基于 InfoObject 表的技术键”是清楚的。使用足够的单词和句子以及对部分示例的引用来清楚地表达你想要什么。阅读minimal reproducible example并采取行动。

标签: javascript join merge sapui5


【解决方案1】:

最好合并然后绑定到模型。根据所需的浏览器支持和您对外部库的需求,您可以使用以下方法之一:

  • 使用lodash [unionBy](https://lodash.com/docs/4.17.10#unionBy合并技术键上的2个数组。新数据应该在第一个数组中。

  • 将数组转换为以技术键为键的对象,然后使用spread syntax进行合并。新数据应该在第二个对象中。

  • 如果以上都不合适,请编写自己的算法。我的猜测是,从将数组转换为对象开始会是最有效的选择。

【讨论】:

  • 感谢您的回答!我的表不是两个数组,因为其中一个是 InfoObject,它由 OData 服务导入,所以我必须将其转换为可能不是很有效的 JSON。你知道我将如何创建带有一行我的 uploadTable 的新 InfoObject 条目?
  • 在某种程度上,InfoObject 最终会作为一个数组,因为它被绑定到一个表...所以您需要按照 generateTableView 中的处理来确定最佳的合并方式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多