2016-06-15 10 views
0

他のComoboBoxの選択された値に応じて、実行時にComboBoxの内容をフィルタリングしますが、何らかの形でフィルタのコードが機能しません。Sapui5 ComboBoxのフィルタコンテンツ

単語: 1)私はコントロールbyIDを取得します。 2)集計「アイテム」のバインディングを取得します 3)フィルタを作成します 4)フィルタをバインディング にプッシュします5)コールフィルタ。私はテーブルの上で同じコードを使用して、それは魔法のように動作

var oComboBoxControl = this.getView().byId(someID); 

var oBindingComboBox = oComboBoxControl.getBinding("items"); 

var aFiltersComboBox = []; 
var oFilterPComboBox = new sap.ui.model.Filter("SomeAttribute", sap.ui.model.FilterOperator.EQ, 'SOMESTRING'); 
aFiltersComboBox.push(oFilterComboBox); 
oBindingComboBox.filter(aFiltersComboBox); 

しかし、何も、ここで、サンプルコードを起こりません。私は問題を起こさない。 ComboBoxの一般的な問題です

問題はスタンドアロンのComboBoxで、コードは機能しますが、コンボボックスはこのコンボボックスが複数存在するリスト構造に埋め込まれています。

私はコンボボックスの関連IDを取得する際に何か間違っていると思います。

var sSOMEID = oEvent.oSource.getParent()。getParent()。getParent()。getItems()[1] .getItems()[0] .getCustomControl()。getId();

ダイナミックに生成されたコントロールIDを取得するのは適切なアプローチですか?わからない。

<mvc:View 
controllerName="sap.m.sample.CustomListItem.List" 
xmlns:l="sap.ui.layout" 
xmlns:core="sap.ui.core" 
xmlns:mvc="sap.ui.core.mvc" 
xmlns="sap.m"> 
<List headerText="Custom Content" mode="Delete" items="{path: '/SomeSet'}" > 
    <CustomListItem> 
     <HBox> 
      <core:Icon size="2rem" src="sap-icon://attachment-photo" class="sapUiSmallMarginBegin sapUiSmallMarginTopBottom" /> 
      <VBox class="sapUiSmallMarginBegin sapUiSmallMarginTopBottom" > 
       <ComboBox id="idSomeComboBox" 
       items="{ 
       path: '/SomeSet', templateShareable: true, 
       sorter: { path: 'Description' } 
       }" 
       > 
       <core:Item key="{ID}" 
       text="{Description}"/> 
       </ComboBox> 
      </VBox> 
     </HBox> 
    </CustomListItem> 
</List> 

答えて

0

あなたが正しいコンボボックスにフィルタを設定していないようだ。

あなたはvar oComboBoxControlにコンボボックスを取得しますが、oProductGroupControlからのバインディングを取得し、

に後で oComboBoxControlを使用することはありません

EDIT:OK、コードが正常に表示されました。イベントハンドラ(テキスト入力の変更によってComboBoxがフィルタリングされます)でコードが試され、期待どおりに動作します。

doFilter : function(oEvent) { 
    var filter = oEvent.getParameter("newValue"); 

    var oComboBoxControl = this.getView().byId("cb"); 

    var oBindingComboBox = oComboBoxControl.getBinding("items"); 

    var aFiltersComboBox = []; 
    var oFilterComboBox = new sap.ui.model.Filter("text", "Contains", filter); 
    aFiltersComboBox.push(oFilterComboBox); 
    oBindingComboBox.filter(aFiltersComboBox); 
} 

いくつかの考え:

  • あなたは、コードを確認することができますが実際に実行されますか?
  • 等価性をチェックするフィルタを使用しています。指定されたフィルタは内容を正確に一致させるべきです。 EQの代わりにContainsを試してみませんか?
+0

修正していただきありがとうございます。コピー貼りエラーです。上記の追加情報がいくつか掲載されています。 –

+0

ありがとうございますが、それは解決策ではありません。私がアクセスしようとしているComboboxはリストコントロールの一部です。 –

+0

ああ...その場合、私はあなたが私が推測したのと同じ壁を打ったと信じています。 2年前からGitHub https://github.com/SAP/openui5/issues/130#issuecomment-225539283の私の問題を参照してください....: -/ – Qualiture