2010-11-18 10 views
13

ExtJs ComboBoxのリスト値を更新または再ロードする方法を知りたいと思います。たとえば、いくつかのチェックボックスがあります。これらのチェックボックスは、ComboBoxが持つべき値を決定します。だから、それらのいくつかを選択した後、私は値を見るためにdrowndownリスト(コンボボックス)をクリックします。ExtJs ComboBoxの更新または再ロード

要するに、どのようにしてComboBoxの値(ストア)を変更することができますか?

希望誰かが、私に

おかげチェックボックスにイベントリスナーで

+0

私の答えを評価してください、いくつかの答えはあなたの問題を解決しましたか?チェックマークをクリックして最善の答えを受け入れてください。 – Roberto

答えて

0

を助けるあなたのコンボボックスから読んでいるストアへの参照を取得することができます。その後、その追加または削除の関数を呼び出して、チェックボックスに基づいてストア内のデータを更新します。checked更新が完了したら、ComboBoxコンポーネントのdoLayout()を呼び出し、ストアの現在の状態に基づいて再描画します。

私は、店舗の更新がいつでも自動的に更新されるようにする方法があると思いますが、私はそれをまだ使用していません。

+0

あなたはそのイベントの中でコンボボックスを更新することは可能だと思いますか?たとえば、コンボボックス(下向き矢印)をクリックして、表示する前に、選択したチェックボックスに基づいて値を取得する関数です。 – user512514

+0

実際、私はチェックボックス付きのgridPanelを持っています。 getSelectionsで取得したレコードから値を取得しています。私は行を選択する(またはチェックボックスを選択する)たびにこの処理を行う代わりに、このプロセスを一度行う方法を見つけたいと思います。だから、私はComboBoxをクリックしてそれをやっているというアイデアを得ました。 – user512514

+0

これは、コンボボックスの内部イベント内で実行し、ComboBoxオブジェクトを拡張し、親のイベントハンドラを呼び出す前に独自のjを追加することは間違いありません。 gridPanelに関しては、コードなしで概念化するのは少し難しいです。 –

6

それは私が実行時に店を変更するには、この文書化されていないExtJSのAPI関数を使用してきたこの

{ 
    xtype: 'checkbox', 
    //configs 
    listeners : { 
    checked : function (checkbox, checkedBool) { 
     var yourCombo = Ext.getCmp(yourComboID); 

     //I'm not sure what params you will need to reload the comboBox from your 
     // service but hopfully this will give the jist of things. . . 

     yourCombo.store.reload(
        { 
        params: 
         {yourParam : checkedBool}, 
         {yourRowID : rowID} 
        }); 
     } 
} 
14

のような少し何か行く:

mycombobox.bindStore(newStore); 

http://www.sencha.com/forum/showthread.php?40749-Change-Combobox-store-data-updateにサポートチームで述べたように。

編集:私は、ストアが移入されたときに、新しいデータを配置する場合、私はここでは、この

storeMyStore = new Ext.data.Store({ 
    ... 
    listeners: { 
     load: function(this, records, options) { 
      cbMyCombo.bindStore(storeMyStore); 
     } 
    } 
}); 
+0

実際には「文書化されていません」実際には http://docs.sencha.com/extjs/4.2.5/#!/api/Ext.form.field.ComboBox-method-bindStore しかし、ありがとう! –

+0

ああ、それは2011年に文書化されていません:) – Roberto

2

ような何かを私は選択が別のComboBoxに行われた後に更新されたコンボボックスを作ります。 基本的に、最終ユーザは2つのコンボボックスを使用して、最初のコンボボックスでの選択に基づいてメインカテゴリとサブカテゴリを選択できます。

これが最初のコンボボックスのための店である:

Ext.define("StoreSubject", { 
extend: "Ext.data.Model", 
fields: [ 
{ 
    name: 'i_Id' 
}, 
{ 
    name: 's_Value' 
} 
] 
}); 

var StoreSubject = Ext.create('Ext.data.JsonStore', { 
model: 'StoreSubject', 
proxy: { 

    type: 'ajax', 
    url: '../General/AdministrationDefaultXMLDOM.aspx?qid=15', 
    reader: { 
     type: 'json' 
    } 
} 
}); 
StoreSubject.load(); 

これは、第二次コンボボックスのための店である:Comoboxため

Ext.define("StoreLanguageGroup", { 
extend: "Ext.data.Model", 
fields: [ 
{ 
    name: 'i_Id' 
}, 
{ 
    name: 's_Value' 
} 
] 
}); 
var StoreLanguageGroup = Ext.create('Ext.data.JsonStore', { 
model: 'StoreLanguageGroup', 
proxy: { 

    type: 'ajax', 
    url: '../General/AdministrationDefaultXMLDOM.aspx?qid=16', 
    reader: { 
     type: 'json' 
    } 
} 
}); 

私のコードは次のようになります。..

まずコンボボックス:

var cmbSubjectName = Ext.create('Ext.form.field.ComboBox', { 
id: 'cmbSubjectName', 
fieldLabel: '<b>Subject</b>', 
name: 'cmbSubjectName', 
valueField: 's_Value', 
displayField: 's_Value', 
allowBlank: false, 
anchor: '80%', 
labelWidth: 150, 
emptyText: '[--Choose--]', 
minChars: 0, 
store: StoreSubject, 
queryMode: 'local', 
typeAhead: true, 
listeners: { 
    'select': { 
     fn: function (combo, value) { 
      var strSubjectName = Ext.getCmp('cmbSubjectName').getValue(); 
      Ext.getCmp('cmbLanguageType').clearValue(); 
      Ext.getCmp('cmbLanguageType').getStore().load({ 
       params: { 
        SubjectName: strSubjectName 
       } 
      }); 
     } 
    } 

}, 
}); 

このコードは(それ以外の場合は、負荷に維持する無力)を呼び出し、COMBOXストアを上書きするために使用される

Ext.override(Ext.LoadMask, { 
onHide: function() { 
    this.callParent(); 
} 
}); 

// -------------------- -------

セカンドコンボボックス:

var cmbLanguageType = Ext.create('Ext.form.field.ComboBox', { 
id: 'cmbLanguageType', 
fieldLabel: '<b>Language</b>', 
multipleSelect: false, 
name: 'cmbLanguageType', 
valueField: 's_Value', 
displayField: 's_Value', 
allowBlank: false, 
anchor: '80%', 
labelWidth: 150, 
emptyText: '[--Choose--]', 
minChars: 0, 
store: StoreLanguageGroup, 
queryMode: 'local', 
typeAhead: true, 
}); 

・ホープ、この意志はあなたが...助けと

+0

[so]へようこそ! [ツアー]をしてください。 – Unihedron

関連する問題