0

我有一个文本框。一旦用户输入内容,我就会打开一个窗口并在窗口中显示数据。如果没有找到结果,我想关闭这个窗口,然后显示一个消息框。请参阅下图了解更多信息。 在此处输入图像描述

在商店的加载事件中,我编写了以下代码。

'load': function (thisStore, records, successful, eOpts) {
            if (successful) {
                if (records == null || typeof records[0] === "undefined") {

                    var msg = 'No records found for the given selection.';
                    MessageWindow.show('Information', msg, Ext.Msg.OK, Ext.Msg.INFO);
                }
            }
        }

现在要关闭搜索结果窗口,我已将代码更改为:

'load': function (thisStore, records, successful, eOpts) {
            if (successful) {
                if (records == null || typeof records[0] === "undefined") {
                      var win = Ext.WindowManager.getActive();
                        if (win) {
                            win.close();
                        }
                    var msg = 'No records found for the given selection.';
                    MessageWindow.show('Information', msg, Ext.Msg.OK, Ext.Msg.INFO);
                }
            }
        }

但是当这段代码执行时,它也会关闭消息框(以及搜索窗口)。我只想关闭搜索窗口。

请你好

4

2 回答 2

1

首先,消息框(由 Evan Trimboli 解释)不是窗口的子窗口。

我已经在我的本地 extjs 项目中测试了这种行为(创建一个 Ext.Window,然后创建一个消息框)。这是一些代码

    openWindow: function() {
    this.initWindow();
    this.window.doLayout();
    this.window.show();

    Ext.MessageBox.alert( translate('error', 'general'), 'tag' );
    window.setTimeout(function() {                 
        BlueFork.Taskstatus.Creation.window.close();
        BlueFork.Taskstatus.Creation.window.destroy();
    }, 5000);
},

使用此代码,extjs 将关闭窗口而不是消息框。

使用

var win = Ext.WindowManager.getActive();
win.close();

将关闭消息框。

您是否已经调试过触发加载事件的频率?

也许它触发了两次,第一次 getActive 返回消息框,第二次触发,返回窗口?两扇窗户都关上了。

干杯!

于 2013-08-30T13:03:11.990 回答
-2

我认为在保留消息框的同时关闭窗口是不可能的。您可以做的是在窗口关闭后,显示一个具有相同文本的新消息框。

于 2013-08-30T06:30:15.920 回答