Extjs 组合框无法聚焦,因此无法展开

Extjs 组合框无法聚焦,因此无法展开,extjs,combobox,callback,focus,jsonstore,Extjs,Combobox,Callback,Focus,Jsonstore,两天来,我一直在摆弄几行代码,由于某种原因,我无法让它运行 我想要的是: 用户从组合框中选择关系,然后必须从第一个组合框过滤的人员列表中选择人员。如果只有一个人,则必须直接选择。如果它有多个,我希望组合框展开,当然显示检索到的人员列表。听起来很简单 onRelationContactSelect()是通常在选择人员时执行的代码。由于手动设置值时不会触发select事件,因此我只是手动调用它。我在load事件的回调中有代码,以确保从服务器检索数据。首先展开或选择记录所需的 问题是: 当我有一张唱片

两天来,我一直在摆弄几行代码,由于某种原因,我无法让它运行

我想要的是:

用户从组合框中选择关系,然后必须从第一个组合框过滤的人员列表中选择人员。如果只有一个人,则必须直接选择。如果它有多个,我希望组合框展开,当然显示检索到的人员列表。听起来很简单

onRelationContactSelect()是通常在选择人员时执行的代码。由于手动设置值时不会触发select事件,因此我只是手动调用它。我在load事件的回调中有代码,以确保从服务器检索数据。首先展开或选择记录所需的

问题是:

当我有一张唱片(records.length==1)时,一切都像一个魔咒。当我有超过1条记录时,combobox contactCombo无法展开。我通过ExtJs内部代码进行了大量调试,原因是它没有焦点。无论我如何调用contactCombo.focus(),它都不会聚焦。因此它不会扩展。为了让它更烦人,我可以用以下代码展开另一个组合框:

function onRelationContactSelect() {
categorieStore.load({ callback: function(r, options, success) {
    //debugger;
    //categorieCombo.focus();
    //categorieCombo.expand();
}});
categorieCombo.focus();
categorieCombo.expand();
}

可以看出,我在回调之外调用了focus()和expand(),但categorieStore的模式是“local”。categorieStore中的数据是静态的,但仍从服务器检索

守则:

function onRelatieSelect() {
contactStore.baseParams = {"relatieId": relatieCombo.value };
contactStore.load({callback: function(records, options, success) {
    if(records.length == 1) {
        contactCombo.setValue(records[0].get('Id'));
        onRelationContactSelect();
    } else {
        contactCombo.clearValue();
        contactCombo.focus();
        contactCombo.expand();
    }
}}); 

openTicketRelationLabel.show();
gridTicketRelatie.show();
ticketRelatieStore.load({ params: {relatieId:relatieCombo.value}});
SetRelatieInfo();
SetContractsInfo();
setSfHoursOsab();
showRelationNotifications(relatieCombo.value);
}
我已经尝试了很久,但似乎我无法从回调处理程序内部和回调处理程序外部聚焦组合框,我还没有数据


有人能帮我吗?

在对两个不同的组合框进行沙箱处理后,我找到了解决方案

解决方案很奇怪,但很简单:

categorieCombo.on('select', function() {
subcategorieCombo.focus();
subcategorieStore.load({ callback: function(r, options, success) {
    subcategorieCombo.focus();
    subcategorieCombo.expand();
} });
在加载之前集中注意力

在加载的回调中再次聚焦

除了需要关注两次之外,对这个解决方案唯一不满意的是,我根本不知道为什么这样做有效,但它为我解决了问题