获取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);
}