我有一个以{Orders}为列的表格。在我的metadata.xml中,我得到{status} entity。
<smartTable:SmartTable id="table" beforeRebindTable="handleBeforeRebindTable">
<Table>
<columns>
<Column>
<header>
<Text text="ManufacturingOrder" id="order"/>
</header>
</Column>
</columns>
<items>
<ColumnListItem >
<cells>
<ObjectIdentifier title="{Order}" />
</cells>
</ColumnListItem>
</items>
</Table>
</smartTable:SmartTable>
现在,我想只显示那些状态= 1的订单。 (状态可以是多种类型)。
为此,我使用了handleBeforeRebindTable作为
handleBeforeRebindTable: function(oEvent) {
var oTableItems = this.getView().byId("table").getItems();
var oItemData;
var sStatus = "status";
for (var i = 1; i < oTableItems.length; i++) {
oItemData = oTableItems[i].getBindingContext().getProperty();
if (this.sStatus === "1") {
oTableItems[i].setVisible(true);
} else {
oTableItems[i].setVisible(!oItemData.Active);
}
}
},
然而,不知怎的,它不起作用。任何人都可以告诉我我做错了什么或其他任何方式做到这一点?
答案 0 :(得分:0)
在绑定表之前触发BeforeRebindTable事件。因此该表尚未包含数据。但是您可以在事件中为绑定添加过滤器。
handleBeforeRebindTable: function(oEvent) {
var oParameters = oEvent.getParameter("bindingParams").parameters;
oParameters.filters = oParameters.filters.concat(new sap.ui.model.Filter("status", sap.ui.model.FilterOperator.EQ, "1"));
}