2016-06-27 6 views
0

私のリストをTypeIDでフィルタリングしたいのですが、私のIDは数字(int32)であり、 "Contains"フィルタは数字では機能しません。SAPUI5フィルタは文字列でのみ動作します

onSearch : function (oEvt) { 
    var sQuery = oEvt.getSource().getValue(); 
    var list = this.getView().byId("myList"); 
    var binding = list.getBinding("items");   

    if (sQuery && sQuery.length > 0) { 
     binding.filter([ new sap.ui.model.Filter([ 
      new sap.ui.model.Filter("TypeID", sap.ui.model.FilterOperator.Contains, window.global.TypeID ) //Error: request failed due to invalid system query options value! 
     ],false)]); 
    } 
}, 

ヘルプがありますか?

+0

あなた自身のフィルターを書く!または、 'Number'を' String'にキャストしてください – Rayon

+0

しかし、私のモデルでどのように値をキャストできますか?針は文字列ですが、乾草は数字を含んでいます – alexP

+0

モデルを割り当てる前に 'Array#map'することができます – Rayon

答えて

0

ODataの観点からは、フィルタ操作 "Contains"はOData操作 "substring"に変換されます。操作の名前が既に暗示しているように、文字列でしか使用できません。非文字列でフィルタリングする場合は、代わりにFilterOperator.EQを使用する必要がありますが、属性の一部をフィルタリングすることはできません。

数値属性の部分をフィルタリングする必要がある場合は、 23で1234を見つけるには、クライアント側のフィルタリングを適用し、フィルタリングを行うルーチンを構築する必要があります。あなたが使用してフィルタをインスタンス化する必要があります

new Filter("TypeID", FilterOperator.Contains, typeID); 

を:代わりに使用してフィルタをインスタンス化するの

new Filter("TypeID", fnTest); 

をクライアント側のフィルタリングは、引っ張られたデータのenourmous量につながる可能性があることに注意くださいバックエンドから。したがって、注意して使用してください。

もちろん、バックエンドロジック担当者と話し合って、数値の代わりに検索属性を文字列として再定義できるかどうかを確認することもできます。

関連する問題