2017-02-24 9 views
0

スマートフィルタバーをスマートテーブルの上に実装しようとしています。私のスマートテーブルには、formatter.jsのフィールドを計算した単純なテーブルがあります。シンプルなスマートフィルタバーの例

<smartFilterBar:SmartFilterBar id="smartFilterBar" entitySet="/abc"> 
    <smartFilterBar:controlConfiguration> 
     <smartFilterBar:ControlConfiguration key="Order" label="ProdOrder"> 
      <smartFilterBar:customControl> 
       <Input id="Order" placeholder="Order"/> 
      </smartFilterBar:customControl> 
     </smartFilterBar:ControlConfiguration> 
    </smartFilterBar:controlConfiguration> 
</smartFilterBar:SmartFilterBar> 
<smartTable:SmartTable id="smartTable_ResponsiveTable" smartFilterId="smartFilterBar" tableType="ResponsiveTable" entitySet="abc" 
    enableAutoBinding="true" showRowCount="true"> 
    <smartTable:customData> 
     <core:CustomData key="p13nDialogSettings" value='{filter:{visible:false}}'></core:CustomData> 
    </smartTable:customData> 
    <Table id="table" width="auto" class="sapUiResponsiveMargin"> 
     <columns> 
      <Column id="idColumnOrder" customData:p13nData='\{"leadingProperty":["ManuOrder"]}'> 
       <Text text="{i18n>order}" id="order" tooltip="{i18n>order}"/> 
      </Column> 
     </columns> 
     <items> 
      <ColumnListItem> 
       <cells> 
        <ObjectIdentifier class="sapUiTinyMarginTopBottom" title="{ManuOrder}"/> 
       </cells> 
      </ColumnListItem> 
     </items> 
    </Table> 
</smartTable:SmartTable> 

しかし、何とか私のスマートフィルタが動作していません。私はたくさんのグーグルで探せましたが、解決策を見つけることはできません。誰かが何が間違っているか教えてもらえますか、スマートフィルタを適切に実装する方法の例を共有できますか?

ありがとうございます。

+1

あなたのご意見は、あまりにも一般的なものです。あなたが得たエラーは何ですか? – Veeraraghavan

+0

スマートフィルタにデータを入力してEnterキーを押したときにスマートテーブルがリフレッシュされないというエラーが発生します。理想的には、テーブルを更新する必要があります。 –

答えて

0

通常の表の代わりにスマートな表を使用できます。この方法では、SmartFilterBarにIDを割り当て、次にプロパティーsmartFilterBarIdをフィルターバーのIDと同じに設定します。検索とフィルタリングが自動的に行われます。

<smartFilterBar:SmartFilterBar id="smartFilterBar"...> 
... 
</smartFilterBar:SmartFilterBar> 
<smartTable:SmartTable smartFilterBarId="smartFilterBar"...> 
... 
</smartTable:SmartTable> 

それとも、あなたが提供するコードのような定期的なテーブルを使用する場合は、フィルタを取得し、あなたのテーブルの結合をフィルタリングするためにそれらを使用するために、コントローラを使用する必要があります。最初にエンティティセット(または使用している場合はJSONモデルのプロパティ)にテーブルをバインドし、フィルタバーの検索イベント用のイベントハンドラを追加する必要があります。あなたのビューで

:あなたのコントローラで

<smartFilterBar:SmartFilterBar id="smartFilterBar" search="onSearch"...> 
... 
</smartFilterBar:SmartFilterBar> 
<Table id="table" items="{/entitySetName}"...> 
... 
</Table> 

onSearch: function() { 
    var aFilters = this.getView().byId("smartFilterBar").getFilters(); 
    this.getView().byId("table").getBinding("items").filter(aFilters); 
} 
関連する問題