0

json/ajax/php を使用してデータをフェッチする ext js に 2 つのリンクされたコンボ ボックスを作成しました。最初のコンボ ボックスで値 (自動車メーカー) を選択すると、2 番目のコンボ ボックスがそのメーカーのモデルで更新されます。たとえば、最初のコンボ ボックスでトヨタを選択すると、2 番目のコンボ ボックスが avensis、corolla、premio、ist などの値で更新されます。 .

初め。問題は、最初のコンボで「トヨタ」などのアイテムを選択し、次に 2 番目のコンボで「アベンシス」などを選択してから、メルセデス ベンツなどの別のメーカーに変更した場合です。Mercedes に C200、E500 などのモデルがある場合、それらは 2 番目のコンボに表示されますが、以前に選択された値「avensis」は最初のコンボで選択されたままです。その値をクリアするにはどうすればよいですか?

2番。返された json に値がない場合、2 番目のコンボ値は変更されません。返された json に null 値がある場合、2 番目のコンボを空にするにはどうすればよいですか? ここに私のコードのスニペットがあります:

xtype: 'combo',
                name: 'auto_make',
                id: 'auto_make',
                fieldLabel: 'Auto Make',
                store: auto_make_store,
                queryMode: 'local',
                displayField: 'name',
                valueField: 'id',
                listeners: {
                    "select": function(obj){ 
                        var makeid = obj.getValue();// value of selected combo item

                        Ext.Ajax.request({
                            url: '../includes/dhx_dataview.php?action=15&mk='+ makeid +'&sc=' + subid + '&ac=' + cat,
                            success: function (response) {
                                var data = Ext.decode(response.responseText).models;
                                auto_model_store.loadData(data);
//Do I clear/ refresh second combo here? How?
                            }
                        });
                    }


                }

Thnx と rgds。

4

2 に答える 2

0

コンボボックスにforceSelection: trueを追加してみてください。これには、選択した値がバインドされたストアに存在する必要があります。

于 2013-01-24T11:41:13.300 に答える
0

このようなことを試すことができます-これにより、コンボボックスがリロードされます

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

     yourCombo.store.reload(
              {   
                 params: 
                     {yourParam : checkedBool},
                     {yourRowID : rowID}
                });
      }
  }
于 2013-01-24T08:36:28.363 に答える