2017-04-13 52 views
0

我有一个{订单}作为列的表。在我的metadata.xml中,我得到了{status}实体。有条件的数据绑定在表

<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

那么,它是如何工作的?什么都没有显示?或一切显示? – Rufi

+0

显示了一切,简而言之,没有过滤发生 – Mnut

回答

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