0

ここに 2 つの Ext Combo ボックスがあります。combobox1 の select イベントが呼び出されたときに 2 番目のコンボボックスの値を変更する必要があります。私の問題は、コンボボックスのモデルを変更する方法がわからないことです。

   items: [{
        xtype:'combo',
        fieldLabel: 'Course',
        afterLabelTextTpl: required,     
        store: new Ext.data.SimpleStore({
            data: [
                [1, 'Bsc CS'],
                [2, 'MSc CS'],
            ],
            id: 0,
            fields: ['value', 'text']
        }),             
        name: 'first',
        listeners:{

          select: function( combo, records, eOpts )
          {
              if(this.getValue()=="Bsc CS")
              {
                 // Ext.get('semcombo').getStore.loadData(msc);
              }
              else if(this.getValue()=="MSc CS")
              {

              }
          }  

        },
        editable:false,
        allowBlank: false
    },{
        xtype:'combo',
        fieldLabel: 'Semester',
        id : 'semcombo',
        afterLabelTextTpl: required,
        name: 'last',
        allowBlank: false,
    }
4

2 に答える 2

0

2番目のコンボボックスでは、モデルタイプごとにコンボボックスを構成します。最初のコンボボックスで選択が行われるときに、適切なコンボボックスを非表示または表示します。

于 2013-02-19T03:02:12.233 に答える
0

データを完全に変更する必要がある場合( JSFiddle )

select: function(checkbox,records) {
      comp.clearValue();
      comp.bindStore(Ext.StoreMgr.lookup(records[0].data.store));
      // you can change the value field if needed
      comp.displayField = 'petname'; 
      // you can change the display field if needed
      comp.valueField = 'id'; 
      // you can change the display template if needed
      comp.displayTpl = new Ext.XTemplate(
          '<tpl for=".">' +
              '{[typeof values === "string" ? values : values["' + comp.displayField + '"]]}' +
              '<tpl if="xindex < xcount">' + comp.delimiter + '</tpl>' +
          '</tpl>'
      );
      comp.picker = null;
 }

2番目のコンボックスでデータをフィルタリング(ロード)する必要があるだけの場合は、次のようなことができます

最初のコンボボックスの選択イベントで、データをフィルタリングするために2番目のコンボボックスを準備します

combobox2.queryData = [{ property: 'fieldName', value: value}];
combobox2.reset();
combobox2.doQuery(combobox.queryData);

ここcombobox2で、アクティブ化されたコンボへの参照と、コンボvalueからのプロパティ値です。新しいクエリを確実に使用するには

combobox2.on('beforequery', function (e) {
    e.query = e.combo.queryData;
});
于 2013-02-19T08:11:04.923 に答える