我在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。
答案 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 添加到组合框中。这将要求所选值存在于绑定存储中。