获取SAPUI5中的表行计数
我有一个显示记录列表的获取SAPUI5中的表行计数,sapui5,Sapui5,我有一个显示记录列表的sap.ui.Table。我想获得数据中记录的计数 我读过这篇文章,但对我没有帮助 这是表的代码(列的代码已被删除,以使post更小): 我想使用数组downlecs作为所有记录的源来显示表中有多少行。例如:3条可能要导出的记录 此值可以根据屏幕上的某些输入字段进行更改,例如,他们可以选择查看产品的所有记录或仅查看特定客户的记录,等等 我怎样才能得到更新的记录数?此值显示在工具栏或表的标题上。是否尝试绑定到{/downlecs/length}?这适用于大多数类型的模型 此外
sap.ui.Table
。我想获得数据中记录的计数
我读过这篇文章,但对我没有帮助
这是表的代码(列的代码已被删除,以使post更小):
我想使用数组downlecs
作为所有记录的源来显示表中有多少行。例如:3条可能要导出的记录
此值可以根据屏幕上的某些输入字段进行更改,例如,他们可以选择查看产品的所有记录或仅查看特定客户的记录,等等
我怎样才能得到更新的记录数?此值显示在工具栏或表的标题上。是否尝试绑定到
{/downlecs/length}
?这适用于大多数类型的模型
此外,当添加到表中时,请确保添加到模型中,而不是表本身。如果您这样做了,那么数据绑定应该负责其余的工作
应该是这样的:
var oSource = oEvent.getSource();
var oItems = oSource.getModel().getProperty("/downRecs");
oItems.push({
"Property1": "Value1",
"Property2": "Value2",
...
});
oSource.getModel().setProperty("/downRecs", oItems);
绑定长度不是可以绑定的属性。此外,在引用链接中写入的内容不正确,因为您无法初始化属性的ListBinding,ListBinding需要模板或工厂以及多个聚合基数 若要获得有关更新的记录计数的信息,应将其附加到绑定的更改事件
var oBinding = oTable.getBinding("rows");
oBinding.attachChange(function(sReason) {
oYourTextField.setText(oBinding.getLength());
});
请参阅jsbin并按列标题查看筛选菜单
我们知道这有点麻烦,我们正在开发一个ControlModel,您可以绑定触发更改事件的东西,比如绑定选定项的长度或数量。xml视图
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);
}
controller.js
onInit:function(){
风险值数据={
“产品集合”:[
{
“产品ID”:“1239102”,
“名称”:“功率投影仪4713”,
“供应商名称”:“钛”
},
{
“产品ID”:“2212-121-828”,
“名称”:“角斗士MX”,
“供应商名称”:“Technocom”
}]
}
var oModel=new sap.ui.model.json.JSONModel();
oModel.setData(数据);
this.getView().setModel(oModel);
},
单击:函数(){
var count=this.getView().byId(“idProductsTable”).getItems().length;
var id=this.getView().byId(“idset”).setText(“Record=“+count”);
警报(“记录=”+计数);
}
还有一种方法
oTable.\u getRowCount()所以在我的XML中,我会添加{downRecs/length}以显示它,对吗?那真的是{downRecs.length}(即“.”而不是“/”)吗?当用户选择各种选择条件并设置模型时,downRecs的内容将重新加载,但与您在setProperty调用中显示的不同。@toxvaerd您在哪里听到的?ui5绑定中没有这样的东西。我尝试了上面的大多数方法,但都不起作用——无法加载页面。如果其他人有什么建议,我将不胜感激。我已经尝试了很多,但到目前为止没有任何帮助。@aborjinik我已经在1.24中的JSONModel中使用了它,它工作得很好:-)也许它只是一个JSONModel的东西?@toxvaerd它在ui5的任何版本中都不工作,不管模型类型如何。试过你的例子。当我调用console.log(oBinding)(就在getBinding调用之后)时,它显示为“undefined”。如果我查看我的表(oTable)并仔细查看,它将绑定显示为我的JSON数组('/downlecs')。我添加了您显示的三行,但是因为oBinding是说undefined,所以attachChange出现了一个错误。我遗漏了什么吗?我终于让它工作了……我必须把代码放在调用JSON调用的同一区域。谢谢,泰先生。我试试看。通过每次调用ajax时获取接收到的项目数,我在某种程度上能够绕过它。但我也会尝试你展示的东西,虽然我没有按钮可按,但我会看看我如何在某些方面工作。你在哪里找到这个方法的?
var oBinding = oTable.getBinding("rows");
oBinding.attachChange(function(sReason) {
oYourTextField.setText(oBinding.getLength());
});
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);
}