我有一个报告表,该表以三种不同的方式填充,具体取决于选择过滤器。在调用报告的末尾,我使用“ updateFinished”事件循环遍历表条目,将它们绘制为斑马风格,并将最后的摘要行绘制为粉红色。
SAPUI5应用程序版本为1.44.12
this.oStsTable = this.getView().byId("statusReportTable");
this.oStsTable.attachEventOnce("updateFinished", function(oEv) {
var aItems = oEv.getSource().getItems();
if (aItems && aItems.length > 0) {
for (var i = 0; i < aItems.length; i++) {
if (i === aItems.length - 1) {
aItems[i].addStyleClass("pinkBackground");
} else {
var even = i % 2;
if (even !== 0 && i < aItems.length) {
aItems[i].addStyleClass("cyanBackground");
}
}
}
}
});
this.byId("statusReportTable").getBinding("items").filter(oTableSearchState);
有了可用的数据,我得到了3个数据集。情况1为7,情况2为7,情况3为23。对于前两种情况,一切正常。问题是案例3(23条记录)。在后端进行调试,我看到23。当出现表时,我再次看到23。但是“ updateFinished”事件中的getItems()方法只能看到20(!)。结果(是的,猜对了),第20行变为粉红色,其余的无颜色的行作为循环退出。
钟声响吗?
答案 0 :(得分:1)
如果您只想在最后一行中添加具有不同颜色的斑马样式,则建议仅在您的应用中使用CSS,如下所示。
table tr:nth-child(even) {
background-color: green;
}
table tr:nth-child(odd) {
background-color: red;
}
table tr:last-of-type {
background-color: yellow;
}
答案 1 :(得分:0)
如果您只需要在sap.m.Table上替换行颜色,那么我建议您将属性alternateRowColors
设置为 true 。
<Table id="idProductsTable"
alternateRowColors="true"
items="{ path: '/ProductCollection' }">
<headerToolbar>
<Toolbar>
<Title text="Products"/>
</Toolbar>
</headerToolbar>
<columns>
<Column>
<Text text="Product" />
</Column>
<Column>
<Text text="Supplier" />
</Column>
</columns>
<items>
<ColumnListItem>
<cells>
<ObjectIdentifier title="{Name}" text="{ProductId}"/>
<Text text="{SupplierName}" />
</cells>
</ColumnListItem>
</items>
</Table>
注意::该属性只能与Belize和Belize Deep主题一起使用。高对比度黑白主题不提供备用行着色。
找到sap.m.Table here的属性。