2011-09-08 22 views
5

私はオートコンプリートた次のような構成のために使用さExtJSのコンボボックスを持っています。 ユーザがサーバから返されたリストから値を選択したが、後でその値を削除してコンボボックスを空にしたい場合、コンボボックスを空にしないで、古い値もぼかしに再表示されます。このような場合、このコンボボックスで空の値を許可するにはどうすればよいですか?私はそれがforceSelection:trueである可能性があることを理解していますが、それ以外の場合はユーザーが任意の値を入力できるので、それを維持する必要があります。ExtJSの4コンボボックスオートコンプリート

b。 サーバが空のリストを返すと、No values Foundというメッセージを表示します。私はこの値をdisplayFieldエンティティ、つまり{id: ''、name: '値が見つかりません'}に入れることでこれを試みました。しかし、この場合、ユーザーはこの値を選択してサーバーに送信することができますが、これは期待どおりではありません。したがって、空リストのメッセージをどのように表示できますか?

誰かがこれに軽く投げかけてもらえますか?

答えて

3

、次のように予想される目的を果たすことができるハック作成されます。

Ext.override(Ext.form.field.ComboBox,{   
    assertValue: function() { 
     var me = this, 
      value = me.getRawValue(), 
      rec; 
     if (me.multiSelect) { 
      // For multiselect, check that the current displayed value matches the current 
      // selection, if it does not then revert to the most recent selection. 
      if (value !== me.getDisplayValue()) { 
       me.setValue(me.lastSelection); 
      } 
     } else { 
      // For single-select, match the displayed value to a record and select it, 
      // if it does not match a record then revert to the most recent selection. 
      rec = me.findRecordByDisplay(value); 
      if (rec) { 
       me.select(rec); 
      } else { 
       if(!value){ 
        me.setValue(''); 
       }else{ 
        me.setValue(me.lastSelection); 
       } 
      } 
     } 
     me.collapse(); 
    } 
}); 

これはExtJSのライブラリのファイルが含まれているの後に含まれる必要があります。

「値が見つかりません」に表示されるその他の問題については、「emptyText」はVarunの推奨通りに動作します。

これは、somoneが似たようなものを探すのに役立ちます。

2

私はこれをExt JS 3.3.1で行っています。彼らがExt JS 4に当てはまるかどうかはわかりませんが、私はそうすべきだと思います。

最初の問題の場合は、autoSelect : falseと設定します。 autoSelectは、デフォルトでtrueに設定されています。これはallowBlank : trueが設定されている場合にのみ機能します。

データストアによって収集された最初の結果を選択する場合はtrue(デフォルトは をtrueにします)。 false値を指定すると、 (typeAheadDelay)の値がtrueでない限り、コンポーネントの値を設定するために、 ドロップダウンリストから手動で選択する必要があります。

第2の問題については、listEmptyTextを使用してください。ドキュメントから

項目が見つからない場合は、データビューに表示する空のテキスト。 (デフォルトは '')

乾杯。上記の質問にforceSelectionに関連する問題については

+0

こんにちはVarun、お返事ありがとうございます。 実際には、autoSelectはリストの最初の項目を強調表示していますが、古い値を削除してnullを許可するという目的を果たしていません。そしてlistEmptyTextのために、私はExtJS4のドキュメントでこの設定を見つけることができませんでした。 私は両方を試しましたが、残念ながらExtJs 4で動作させることができず、解決策を探していました。 – netemp

+2

私はドキュメントをチェックしたところで、 'listEmptyText'は' listConfig'の 'emptyText'オプションで設定できるようになりました。それを試してください。私はそれを自分で試していない。 'allowBlank'プロパティをもう一度チェックしてください。それが問題1を引き起こす唯一の設定です。 –

+0

ちょっとVarun、ポストのおかげで。私はlistConfigの下のemptyTextが正常に動作したことを確認します。再度、感謝します。 null値については、forceSelection:trueが他のオプションをオーバーライドしていると感じます。したがって、allowBlank:trueを行っても、値リストにNull値がない場合でも、コンボボックスは古い値を返します。これに対処する方法の1つは、サーバー側から空のレコードを送信することですが、残念ながらそれはそれほどエレガントではありません。 これまでのご協力ありがとうございます。 – netemp