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

时间:2012-08-22 15:12:26

标签: select dojo spinner progress

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

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"); 

1 个答案:

答案 0 :(得分:0)

我敢打赌你可以在select._fetchHandle deferred和store._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._fetchHandle只会在实际下载过程中短暂出现(假设我们可以在选择onOpen后调用它)。相反,ItemFileReadStore中的另一个私有方法派上用场

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