o数据绑定到表会在表输出中生成重复的行



我有一个 OData 连接,使用它读取一个实体集,其中包含以下结构中返回数据的条件。数据位于根节点本身而不是对象数组中-

o数据结构

然后,我将此数据设置为 JSON 模型,并将此模型绑定到我的 oTable。 控制器中的代码如下所示-

//Get data for the table
var oTabData = sap.ui.getCore().byId("MyTable");
var sServiceUrl = "http://example.com/sap/opu/odata/SAP/ZXX_SRV";
var oModel2 = new sap.ui.model.odata.ODataModel(sServiceUrl,true);
var oJsonModel = new sap.ui.model.json.JSONModel();
oModel2.read("/MyEntitySet(Myvar1='000001',Myvar2='abc')?
$format=json",null,null,true,function(oData,response){  
oJsonModel.setData(oData);
});
oTabData.setModel(oJsonModel);

视图包含表,绑定如下所示。忽略了表声明代码的其余部分以保持简短。表声明为 oTable 与 id MyTable 和所有正确的列-

//Template to map the data to the respective column
var template = new sap.m.ColumnListItem({
id:"table_template",
type: "Navigation",
visible: true,
cells:[
new sap.m.Label({
text: "{/Myvar1}"
}),
new sap.m.Label({
text: "{/Myvar2}"
}),
new sap.m.Label({
text: "{/Myvar3}"
}),
new sap.m.Label({
text: "{/Myvar4}"
})
]
});
var oFilters = null;
oTable.bindItems("/",template,null,oFilters);

问题是——

  1. 由于我已经进行了有条件的服务调用,因此 oData 输出 接收不会像我们制作时那样输出数据数组 无条件通话 (oModel2.read("/MyEntitySet?$format=json",null,null,true,function(oData,response))。 在后一种情况下,输出位于结果数组下 绑定赋值为/results,并且按预期正常工作。
  2. 在当前情况下(有条件的服务调用),如 输出在根级别可用,在模板中使用绑定/以及在每个元素前面使用/(例如{/Myvar1}如上所示)。但是使用这种技术,它也会产生 3 最初表中的默认空行。当上述控制器 代码被执行,它填充表 3 x 4 次,即 12 行 单行输出。

由于组织限制,我无法将原始代码放在这里。但情况就是这样。任何帮助将不胜感激。

谢谢。

PS:没有使用任何会生成重复行的循环。

可以将表直接绑定到 ODataModel:

步骤:

  1. 进行绑定之前,您需要为表行创建一个模板,在sap.m.Table中它是ColumnListItem控件,我建议将其执行到XML片段。尝试尽可能多地使用 XML 进行标记,因为它比 js 编码更清晰、更易于维护; "单元格"中的所有控件都应使用相对路径绑定到行的属性。
  2. 通过调用"oView.setModel(MODEL_INSTANCE)"告诉视图您的模型,通过此行,您将默认模型设置为视图。从现在开始,里面的所有控件都可以看到它。该模型是默认的,因为未指定其名称。
  3. oTable.bindItems("/MyEntitySet", { template: oColumnListItem, filters: aFilters}); - 这将自动触发 OData 调用以获取所有需要的数据。该表将自动更新。您应该会看到这些行。

最新更新