Sapui5 聚合绑定仅显示最后一项

Sapui5 聚合绑定仅显示最后一项,sapui5,Sapui5,您好,我正在尝试将聚合绑定到表控件上,但结果行会与数据集中的最后一个结果重复。更详细地说,该表包含正确数量的行和列,但每行重复相同的数据 执行OData读取调用并将结果放入JSON模型并将该模型绑定到表上是可行的,但这似乎代价不必要 装订部分 var filter = new Filter("itemID", sap.ui.model.FilterOperator.EQ, this.item.itemID); this._template = this._template ? this._t

您好,我正在尝试将聚合绑定到表控件上,但结果行会与数据集中的最后一个结果重复。更详细地说,该表包含正确数量的行和列,但每行重复相同的数据

执行OData读取调用并将结果放入JSON模型并将该模型绑定到表上是可行的,但这似乎代价不必要

装订部分

var filter = new Filter("itemID", sap.ui.model.FilterOperator.EQ, this.item.itemID);  
this._template = this._template ? this._template : sap.ui.xmlfragment("InventoryListItem", this.getView().getController());
this.inventoryList.bindAggregation("items", {
    path: "oDataModel>/InventoryUsages",
    filters: [filter],
    template: this._template,
    parameters: {
      select: 'inventoryID,memberID,fName,lName,condition,purchasedAt,price'
   }
});
模板:

<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:l="sap.ui.layout">
<ColumnListItem>
    <cells>
        <Text text="{path: 'oDataModel>inventoryID'}" />
        <Text text="{parts:[{path:'oDataModel>fName'}, {path:'oDataModel>lName'}], formatter:'.nameFormater'} " />
        <Text text="{oDataModel>purchasedAt}" />
        <RatingIndicator maxValue="5" class="sapUiSmallMarginBottom" value="{
            path: 'oDataModel>condition', formatter: '.conditionFormat'}"
            change="onRatingPress"/>
        <Text text="{path:'oDataModel>price', formatter: '.priceFormatter'}" />
        <Button text="Remove"
            icon="sap-icon://delete"
            press="onRowDelete"
            class="appBtn"/>
    </cells>
</ColumnListItem>

该表显示了正确的行数和列数,但数据错误。它将为每一行显示集合中的最后一个结果。当表格增长时,表格将显示集合中的下一个最后结果。有人知道我怎么解决这个问题吗



答:原来我在对一个没有主键的视图进行OData调用。渲染会出现小故障,因此仅显示出于某种原因的最后一个结果

我怀疑将片段实例化一次(!)作为模板可能会破坏这里的秩序;因为它只实例化一次,所以您可以继续使用对相同控件的引用,这将最终显示模型中的最后一项

最好使用函数并返回ColumnListItem控件的新实例


编辑

我在下面提供了一个工作示例(单击“运行代码片段”查看它是否工作)

因为使用片段作为聚合模板似乎有点不合我的口味,下面是我将如何进行绑定

有几点:

  • 表的
    列列表项
    直接在视图中定义为聚合。不需要单独的模板、片段或工厂函数,所有内容都在视图中(应该在的位置;)
  • 过滤器采用1到10之间的数字,并在
    输入
    字段发生变化时应用
  • 过滤器本身只是一个简单的函数,然后在必要时重新应用
  • 希望这有帮助

    sap.ui.controller(“view.initial”{
    onInit:function(){
    var model=new sap.ui.model.json.JSONModel();
    model.setData({
    filterValue:4,
    someArray:[{“itemID”:4,“inventoryID”:323,“memberID”:440,“fName”:“Victoria”,“lName”:“Hutchings”,“condition”:4,“purchasedAt”:“1992-01-18T21:53:09.291Z”,“price”:96},{“itemID”:1,“inventoryID”:83,“memberID”:83,“fName”:“Connie”,“lName”:“Monuteaux”,“condition”:4,“purchasedAt”:“2001-07-28-01:05:35.935Z”,“price”:99},{“itemID”:3,“inventoryID”:591,“memberID:399,”fName:“Cecelia”,“lName:“Peschke”,“条件”:1,“purchasedAt:“2063-07-03T22:41:15.159Z”,“价格”:17},{“项目ID”:8,“库存ID”:523,“memberID”:417,“fName:“Ginger”,“lName:“Vasquez”,“条件”:5,“purchasedAt:“1967-02-27T09:24:18.631Z”,“价格”:67},{“项目ID”:6,“库存ID”:310,“memberID”:573,“fName:“乔治”,“lName”,“迪克森”条件:4,“purchasedAt”:“2050-05-04T12:46:00.850Z”,“价格”:6},{“项目ID”:2,“库存ID”:749,“成员ID”:887,“fName”:“Subha”,“lName”:“Gunn”,“条件”:3,“purchasedAt”:“1952-04-08T01:51:08.544Z”,“价格”:40},{“项目ID”:7,“库存ID”:46,“成员ID”:546,“fName”:“Delena”,“lName”:“Ramirez”,“条件”:4,“purchasedAt”:“2051-04-0510:63Z”,“价格”“:62},{“itemID”:0,“inventoryID”:734,“memberyid”:775,“fName”:“Bola”,“lName”:“Shah”,“condition”:4,“purchasedAt”:“1986-09-17T23:29:15.318Z”,“price”:97},{“itemID”:8,“inventoryID”:550,“memberyid”:546,“fName”:“kassandra”,“lName”:“Cowen”,“condition”:4,“purchasedAt”:“1954-11-259:37:03.604Z”,“price”:83},{“itemID”:699,“inventoryID”:469,“memberyid”fName,“fName”:“四月”、“lName”:“加西亚”,“条件”:2,“采购数据”:“1909-07-07T21:40:21.919Z”,“价格”:1},{“项目ID”:0,“库存ID”:777,“成员ID”:88,“fName”:“苏珊娜”,“lName”:“福克斯”,“条件”:5,“采购数据”:“2026-04-04T13:18:20.715Z”,“价格”:21},{“项目ID”:5,“库存ID”:401,“成员ID”:956,“fName”:“安吉洛”,“lName”:“斯佩利奇”,“条件”:2,“采购数据”“2044-10-13T19:17:29.321Z”,“价格”:51},{“项目ID”:10,“库存ID”:799,“成员ID”:216,“fName”:Sonny,“lName”:“Gergely”,“条件”:3,“purchasedAt”:“1947-01-07T01:12:29.721Z”,“价格”:33},{“项目ID”:4,“库存ID”:175,“成员ID”:552,“fName”:“Sara”,“lName”:“Trautman”,“条件”:0,“purchasedAt”:“1992-08-17T22:24:36.721Z”,“价格”:52,{inventoryID:488,“memberID:580,”fName:“Penny”,“lName:“Bettencourt”,“condition:”4,“purchasedAt:”1915-04-25T05:17:05.226Z,“price:”52},{“itemID:7,”inventoryID:713,“memberID:812,”fName:“Greg”,“lName:”Mulvehill”,“condition:”0,“purchasedAt:”1970-05-03T22:47:42.502Z,“price:”50},{“itemID:1,“inventoryID:”978,“memberID:”401,“fName:”Kathe“,”lName:“Krugel”,“condition:”0,“purchasedAt:”1942-02-09T21:40:24.584Z,“price:”96},{“itemID:”2,“inventoryID:”686,“memberID:”216,“fName:”Jody”,“lName:”Gage”,“condition:”5,“purchasedAt:”2010-11-25T16:43:41.214Z,“price:”86},{“itemID:”4,“inventoryID:”686,“memberID:”110,“fName:”Shelly:”lName:“Epfel”,“condition:”1,“purchasedAt:”1989-06-29T04:58:29.195Z,“价格”:37},{“itemID”:4,“inventoryID”:977,“memberID”:350,“fName”:“LaDagea”,“lName”:“Doerfler”,“condition”:1,“purchasedAt”:“1959-03-18T15:10:34.816Z”,“价格”:2}]
    });
    sap.ui.getCore().setModel(model);
    },
    onAfterRendering:函数(){
    this.applyFilter();
    },
    applyFilter:function(){
    var-allFilter=[];
    allFilter.push(新的sap.ui.model.Filter(“itemID”,sap.ui.model.FilterOperator.EQ,this.getView().getModel().getProperty(“/filterValue”));
    var oTable=this.getView().byId(“myTable”);
    var oBinding=oTable.getBinding(“项目”);
    oBinding.filter(allFilter,sap.ui.model.FilterType.Application);
    }
    });
    var oView=sap.ui.xmlview({
    viewContent:jQuery(“#view1”).html()
    })
    oView.placeAt(“uiArea”);
    
    
    mContexts
      /Customers('ALFKI'): context 
      /Customers('BLAUS'): context 
      /Customers('FRANK'): context 
      ...