sapui5 sap.ui.table.table如何在使用visibleRowCount属性的同时使用table.ge



我在使用sap.ui.table.table开发应用程序时面临挑战。我无法使用table.getRows()获取完整的行数据

我从odata Service获得了100条记录。对于使用visibleRowCount="10"的表绑定im。因此,我最初只会看到10条记录,通过滚动,我们可以看到剩余的行。

现在,我想在加载数据时进行一些数据和CSS操作。所以我必须得到完整的行信息。

对于数据操作,我可以使用sap.ui.model.json.JSONmodel进行播放。但对于CSS操作,我必须获得完整的行数据。

注意:如果我删除visibleRowCount属性,那么我可以获得完整的行信息。但是表列标题不会被固定,如果我们向下滚动,我们将看不到表列标题。所以我不能那样做

下面是我的代码。。

<Table id="uiTable" selectionMode="None" rows="{tableModel>/Sheet1}" visibleRowCount="10">
<columns>
<Column width="5rem" filterProperty="Project" hAlign="Center">
<m:Label text="Project"/>
<template>
<m:Text text="{tableModel>Project}" wrapping="false"/>
</template>
</Column>
<Column hAlign="Center" width="5rem" filterProperty="State">
<m:Label text="State"/>
<template>
<m:Text text="{tableModel>State}" wrapping="false"/>
</template>
</Column>
<Column width="5rem">
<m:Label text="Region"/>
<template>
<m:Text text="{tableModel>Region}" wrapping="false"/>
</template>
</Column>
</columns>
</Table>

var tableModel = this.getOwnerComponent().getModel("tableModel");
this.getView().setModel(tableModel, "tableModel");

var table = this.getView().byId("uiTable");
var tableLength = tableModel.getData().Sheet1.length;
var tableData = tableModel.getData().Sheet1;
var aRows = table.getRows();
table.onAfterRendering = function () {
sap.ui.table.Table.prototype.onAfterRendering.apply(this, arguments);
for (var i = 0; i < tableLength; i++) {
if (tableData[i].Region === "AP") {
var pRow = aRows[i];
$("#" + pRow.getId() + "-col" + i).addClass("mystyle");
}
}
}

有人能帮我如何使用XML中的table.getRows()visibleRowCount属性来获得完整的行信息吗?

提前感谢

我意识到这个问题并不新鲜,但也许它可以帮助其他人寻找同样的问题。

方法getRows((通常只返回可见的行。但是,一个可能适合某些用例的快速解决方法是简单地将表的visibleRowCount属性绑定到存储了表数据的模型,并使用表达式绑定计算长度。这种方式避免了任何复杂的JS代码,并直接在XML视图中处理计算。

visibleRowCount=";{=${tablemodel>/rows}.length}";

在这个例子中,我已经将行的数据存储在我的JSON模型"的行属性中;表模型";。现在getRows((返回所有有时有用的行。在我的用例中,我需要将自定义css应用于特定的表单元格,这是唯一可行的方法。然而,对于大型数据集来说,这可能不是最好的方法。

希望这能有所帮助。

最新更新