如何使用EXTJS库在屏幕上加载进度条并监视NetSuite中已保存搜索的执行时间?

问题描述 投票:0回答:1

我正在尝试在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文档中读过“范围”触发回调。

我希望屏幕上会显示一个进度条,然后在保存的搜索返回结果后直接消失。

任何完成此任务的指导将不胜感激!

extjs netsuite
1个回答
0
投票

我以另一种方式解决了这个问题,并认为我会分享我的答案。我首先创建了一个没有回调的函数,如下所示。

 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()的原因是因为保存的搜索过快完成以显示进度条并再次隐藏。如果其他人有类似的问题,很高兴扩展这一点。

© www.soinside.com 2019 - 2024. All rights reserved.