获取SAPUI5中的表行计数

时间:2014-12-10 20:00:50

标签: sapui5

我有一个显示记录列表的sap.ui.Table。我想得到数据中的记录数。

我已阅读帖子SAP UI 5 how to print total table row,但它没有帮助我。

这是表的代码(已删除列的代码以使帖子更小):

  <table:Table id="PickRecs" visibleRowCount="10" selectionMode="MultiToggle" visible="true" rows="{/downRecs}" >
    <table:title>
        <txt:Text text="{
      path: '/downRecs',
      formatter: 'Formatter.totalFormatter'
    }">
        </txt:Text>
        <Label text="possible records to export"></Label>

    </table:title>
    <table:columns>
      .......
    </table:columns>
 </table:Table>

这是formatter.js:

totalFormatter:function(results) {

    return results.length;
 }

我想使用数组downRecs显示表中有多少行作为所有记录的来源。例如:要导出的3个可能记录。

此值可以根据屏幕上的某些输入字段进行更改,例如,他们可以选择查看产品的所有记录,也可以只选择某个客户的记录等。

如何获取更新的记录数?该值显示在工具栏或表格的标题上。

4 个答案:

答案 0 :(得分:7)

绑定长度不是您可以绑定的属性。此外,在引用链接上写入的内容不正确,因为您无法为属性初始化ListBinding,ListBinding需要模板或工厂以及多个聚合基数。

要了解更新的记录计数,您应该附加到绑定的更改事件。

var oBinding = oTable.getBinding("rows"); 
oBinding.attachChange(function(sReason) {
    oYourTextField.setText(oBinding.getLength());
});

请参阅jsbin并按列标题以获取过滤器菜单

http://jsbin.com/kohozenina/1/edit?html,output

我们知道这有点麻烦,我们正在开发一个ControlModel,您可以绑定触发更改事件的内容,例如绑定长度或所选项目的数量。

答案 1 :(得分:0)

您是否尝试过绑定{/downRecs/length}?这适用于大多数类型的模型。

此外,添加到表格时,请确保添加到模型而不是表格本身。如果这样做,数据绑定应该处理其余的事情。

这将是以下几点:

var oSource = oEvent.getSource();
var oItems = oSource.getModel().getProperty("/downRecs");
oItems.push({
    "Property1": "Value1", 
    "Property2": "Value2", 
    ...
});
oSource.getModel().setProperty("/downRecs", oItems);

答案 2 :(得分:0)

 xml view 
    <Button text="click" press="click"></Button>
        <Table id="idProductsTable"
    inset="false"
    items="{/ProductCollection}">
    <headerToolbar>
      <Toolbar>
        <Label id="idset" ></Label>
      </Toolbar>
    </headerToolbar>
    <columns>
      <Column 
        width="12em">
        <Text text="Product" />
      </Column>
      <Column
        minScreenWidth="Tablet"
        demandPopin="true">
        <Text text="Supplier" />
      </Column>
    </columns>
    <items>
      <ColumnListItem>
        <cells>
          <ObjectIdentifier
            title="{Name}"
            text="{ProductId}"
            class="sapMTableContentMargin" />
          <Text
            text="{SupplierName}" />
            </cells>
      </ColumnListItem>
    </items>
  </Table>

controller.js
onInit: function() {
    var data= {
        "ProductCollection": [
            {
                "ProductId": "1239102",
                "Name": "Power Projector 4713",
                "SupplierName": "Titanium"

            },
            {
                "ProductId": "2212-121-828",
                "Name": "Gladiator MX",
                "SupplierName": "Technocom"

            }]
            }
    var oModel = new sap.ui.model.json.JSONModel();
    oModel.setData(data);
    this.getView().setModel(oModel);
},
click:function(){
var count= this.getView().byId("idProductsTable").getItems().length;
var id= this.getView().byId("idset").setText("Record="+count);
alert("Record="+count);
}

答案 3 :(得分:0)

还有一种方式

oTable._getRowCount()