2012-02-01 18 views
0

私は、動的データアップロードを使用して以下のコンボボックスの実装を記述しました。extJSコンボボックス。動的データロード

コード

Loyalty.tools.DictionaryComboBox = Ext.extend(Ext.form.ComboBox, 

{ 
    defaultConfig:{ 

     defaults:{ 
      labelWidth:150 
     }, 
     displayField:'value', 
     valueField:'key', 
     forceSelection:true, 
     mode:'local', 
     typeAhead: true, 
     triggerAction: 'all', 
     selectOnFocus:true 
    }, 

    constructor:function (config) { 
     Ext.apply(config, this.defaultConfig); 
     config['store'] = new Ext.data.Store({ 
      fields:['key', 'value', 'description'], 
      proxy:{ 
       type:'ajax', 
       url:config.dictionaryPath + '/' + config.dictionaryName 
      } 
     }); 
     Loyalty.tools.DictionaryComboBox.superclass.constructor.call(this, config); 
    } 

} 

); 

と私はそれを次の方法を使用するには、

  new Loyalty.tools.DictionaryComboBox({ 
       fieldLabel: Loyalty.messages['company.grid.filter.forma'], 
       dictionaryPath: config.dictionaryPath, 
       dictionaryName: 'forma', 
       name: 'forma', 
       id:'forma', 
       allowBlank:true, 
       labelWidth:config.labelWidth 
      }), 

私は2つの問題を抱えている 1)コンボボックスではなく(ロードされたとき、私は、リストデータを取得できますか最初のクリックよりも) 2)コンボボックスにキーを置いて、すぐに希望の値が表示されるようにしたら?

答えて

1

1)どのように店舗を読み込んでいますか?あなたは私が私の問題を決定し、コンボボックスに

var mycombo = Ext.getCmp('mycombo'); 
mycombo.setValue(id); 
+0

1も他の動作しませんでした.... 1もない)リストは、実際に最初にロードされていますが、それ 2をクリックしたときにduplicateloadingされる)より正確な値が設定されている負いません、表示されません。 私はこのすべてを、最初のロードが無視されているかのようにしていると考えています。 – yaroslavTir

+0

queryModeを試してください:mode: 'local'の代わりに 'local' – frosty

+0

こんにちは。私は私の問題を決めました。残念ながら、私は "正しい" metod – yaroslavTir

1

を選択しない方法を求めている)ので、

fields:['key', 'value', 'description'], 
autoLoad: true, 

2のような真:私はあなたが自動ロードを追加する必要があると思います。残念なことに私は "正しい"メトロイドを使わなくてはならなかった。

Loyalty.tools.DictionaryComboBox = Ext.extend(Ext.form.ComboBox, 
    { 
     defaultConfig:{ 

      defaults:{ 
       labelWidth:150 
      }, 
      displayField:'value', 
      valueField:'key', 
      forceSelection:true, 
      queryMode: 'local', 
      typeAhead: true, 
      triggerAction: 'all', 
      selectOnFocus:true 
     }, 

     constructor:function (config) { 
      Ext.apply(config, this.defaultConfig); 
      var isStoreProvided = (config['store'] == undefined); 
      if (isStoreProvided) { 
       var el = this; 


    config['store'] = new Ext.data.Store({ 
       fields:['key', 'value', 'description'], 
       autoLoad:true, 
       proxy:{ 
        type:'ajax', 
        url:config.dictionaryPath + '/' + config.dictionaryName 
       }, 
       listeners: { 
        'load': function() { 
         if (config['initialValue'] != undefined) { 
          el.setValue(config['initialValue']); 
          config['initialValue'] = undefined; 
         } 
        } 
       } 
      }); 
     } 
     Loyalty.tools.DictionaryComboBox.superclass.constructor.call(this, config); 
    } 

} 

));

関連する問題