我有一个显示记录列表的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个可能记录。
此值可以根据屏幕上的某些输入字段进行更改,例如,他们可以选择查看产品的所有记录,也可以只选择某个客户的记录等。
如何获取更新的记录数?该值显示在工具栏或表格的标题上。
答案 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()