表上的条件数据绑定

时间:2017-04-13 08:40:25

标签: javascript sapui5

我有一个以{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);
            }
        }

    },

然而,不知怎的,它不起作用。任何人都可以告诉我我做错了什么或其他任何方式做到这一点?

1 个答案:

答案 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"));
}