0

我在 ext js 中创建了两个链接的组合框,使用 json/ajax/php 获取数据。当在第一个组合框中选择一个值(汽车制造商)时,第二个组合框会使用该制造商下的模型进行自我更新,例如在第一个组合中选择 toyota 将使用 avensis、corolla、premio、ist 等值更新第二个组合框.

第一的。遇到的问题是,当我在第一个组合中选择一个项目时,例如“toyota”,然后在第二个组合中选择例如“avensis”,然后更改为另一个制造商,例如梅赛德斯奔驰。如果梅赛德斯在其下方有模型,例如 C200、E500 等,它们将显示在第二个组合中,但之前选择的值 'avensis' 仍然保留在第一个组合中选择的值。如何清除该值?

第二。如果我返回的 json 没有值,则第二个组合值不会改变。如果返回的 json 具有空值,如何使第二个组合为空?这是我的代码片段:

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

你可以尝试这样的事情 - 这将重新加载你的组合框

{
 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 回答
0

您可以尝试将forceSelection: true添加到您的组合框。这将要求所选值存在于绑定存储中。

于 2013-01-24T11:41:13.300 回答