在ext js中清除和刷新链接组合框中的值

时间:2013-01-24 08:26:18

标签: extjs combobox

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

首先。我遇到的问题是当我在第一个组合中选择一个项目时,例如'toyota',然后在第二个组合中选择例如'avensis',然后换到另一个制造商,例如Mercedes Benz。如果梅赛德斯下面有模型,例如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。

2 个答案:

答案 0 :(得分:0)

你可以尝试这样的东西 - 这会重新加载你的组合框

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

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

答案 1 :(得分:0)

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