如何从控制器中的数据绑定中获取1项?

时间:2017-04-14 14:27:41

标签: sapui5

我有一个通过数据绑定填充数据的表。现在在我的控制器中,我试图循环数据绑定的所有项目。这是我到目前为止所做的,但我无法让它发挥作用。

colorRows : function(oTable) {
    var items = oTable.getBinding("items");
    var rowCount = items.length; //number of visible rows
    var currentRowContext;
    for (var i = 0; i < rowCount; i++) {
        currentRowContext = items[i].getValue(); //this won't work
    }
}

所以我需要从索引匹配i的项目中获取一个值。

编辑:我正在使用sap.m.table

2 个答案:

答案 0 :(得分:0)

我假设您使用sap.m.Table

colorRows : function(oTable) {

    var sPath = oTable.getBinding("items").getPath(); //path to table's data
    var oModel = this.getView().getModel(); //model which is bound to the table
    //or var oModel = oTable.getModel(); if the model is bound directly to the table
    var aData = oModel.getProperty(sPath);//array of rows
    var rowCount = aData.length; 
    var currentRowContext;
    for (var i = 0; i < rowCount; i++) {
        currentRowContext = aData[i]; 
    }
}

Here是一个有效的例子。

答案 1 :(得分:0)

正如Keshet所说,这取决于您使用的表格。这是sap.ui.table.Table的一个例子。首先,您获得每行的上下文,然后您可以访问行上保存的数据(顺便说一下,没有RowValue这样的东西):

colorRows: function(oTable) {
 var aRows = oTable.getRows();
 var currentRowValue;
 for (var i = 0; i < aRows.length; i++) {
  var oRowContext = oTable.getContextByIndex(i);
  if (oRowContext) {
   var oRowObject = oRowContext.getObject();
   // or you can use the getProperty method
   var oSingleValue = oRowContext.getProperty("yourPropertyName");
  }
 }
}