我正在尝试在NetSuite中的Journal记录类型的客户端脚本上设置进度条(在消息框中)。当单击ACCOUNT ITEM(日志记录中的列字段)时,应该触发此进度条。在CLICK上,保存的搜索将被运行,当搜索完成时,隐藏进度条并将结果放在页面上的另一个列字段中。
我已经尝试使用EXT JS框架加载进度条。单击一个帐户项时我成功了,但是在搜索完成后无法隐藏栏。
我首先声明我保存的搜索,它基本上调用了进度条:
var saved_search = showProgressBarWithFn(search);
函数“showProgressBarWithFn(search)”:
showProgressDialogWithFn: function(search)
{
try
{
Ext.MessageBox.show({
title: 'Please wait',
msg: 'Loading items...',
width:300,
wait:true,
waitConfig:{
interval: 200,
scope : Ext.bind(search, this),
fn : function(){
Ext.MessageBox.hide();
}
}
});
}
catch(e)
{
console.log("An unexpected error occurred" + e.message);
}
}
上面,我试图强制范围在搜索上运行,因此“ext.bind”调用。 (请告知我是否错误地使用了此功能)。我在API文档中读过“范围”触发回调。
我希望屏幕上会显示一个进度条,然后在保存的搜索返回结果后直接消失。
任何完成此任务的指导将不胜感激!
我以另一种方式解决了这个问题,并认为我会分享我的答案。我首先创建了一个没有回调的函数,如下所示。
showProgressDialog: function(Title, message)
{
try
{
Ext.MessageBox.show({
title: Title,
msg: message,
width:300,
wait:true,
waitConfig:{
interval:200,
}
});
}
然后我在脚本的主要功能中调用它,然后是保存的搜索,然后使用带有setTimeOut调用的“Ext.MessageBox.Hide()”关闭对话框以允许进度条的短暂延迟显示在屏幕上。
showProgressDialog('Running vendor/customer search', 'Please wait...');
var results = executeSavedSearch('customer', filters, fields);
setTimeout (function() {Ext.MessageBox.hide();},1000);
setTimeOut()的原因是因为保存的搜索过快完成以显示进度条并再次隐藏。如果其他人有类似的问题,很高兴扩展这一点。