如何在Dojo FilteringSelect中显示进度微调器?

如何在Dojo FilteringSelect中显示进度微调器?,select,dojo,spinner,progress,Select,Dojo,Spinner,Progress,我有一个Dojo FilteringSelect,当用户单击列表框中的箭头时,从dB加载它的值大约需要20秒。我想在等待数据库返回数据时显示一个进度微调器。当从数据库中检索数据时,我将使用什么事件来显示微调器,以及在完成时隐藏微调器的事件?谢谢 new FilteringSelect({ store: new dojo.data.ItemFileReadStore({ url: "some url here" }), autocomplete: true, maxHeig

我有一个Dojo FilteringSelect,当用户单击列表框中的箭头时,从dB加载它的值大约需要20秒。我想在等待数据库返回数据时显示一个进度微调器。当从数据库中检索数据时,我将使用什么事件来显示微调器,以及在完成时隐藏微调器的事件?谢谢

new FilteringSelect({
    store: new dojo.data.ItemFileReadStore({ url: "some url here" }),
    autocomplete: true,
    maxHeight: "300",
    required: false,
    id: "country_select_id",
    onChange: function(data) {
        dojo.byId("case_info_status").innerHTML = " ";
    }
}, "country_select_id"); 

我打赌你可以在select.\u fetchHandle和store.\u fetchItems中走很长的路。试试这个

var select = new .... Your FilteringSelect Construct( {} );

select._fetchHandle.addCallback(function() {
 // success callback
 dojo.style(dojo.byId('spinner'), "display", "none");

});

dojo.connect(select.store._fetchItems, function() {
   if(select.store._loadFinished) return; // no-op
   dojo.style(dojo.byId('spinner'), "display", "block");
});
编辑:

select.\u fetchHandle仅在实际下载期间短暂出现(假设我们可以在调用select onOpen后挂接它)。相反,ItemFileReadStore中的另一个私有方法很方便

dojo.connect(select.store._getItemsFromLoadedData, function() {
     dojo.style(dojo.byId('spinner'), "display", "none");
});

mschr,感谢您的回复,我尝试了您的想法,但我一直收到一条错误消息,即“\u fetchHandle未定义”。你知道我该怎么解决吗?我还在想办法弄清楚Dojo的事。Thanksah sweet,再次查看-filteringselect中的原始延迟处理程序onFetch在开始运行时立即设置_fetchHandle=null..:qPardon my Dojo Unknowledge,但我认为这意味着我不能做我想做的事情,因为_fetchHandle被设置为null?在ItemFileReadStore中没有真正的外部事件用于在获取结束时查询函数流。这是通过store.fetch({cbdecration})完成的,这是一对要获取的属性。获取的一个内部开始是
select.store.\u fetchItems
,使用它来显示图标。另一个内部完整的获取是select.store。_getItemsFromLoadedData,在第一个内部完成时使用connect来隐藏图标