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

メッセージボックスを閉じます。

負荷イベントがトリガーされる頻度を既にデバッグしましたか?

おそらく2回トリガーされ、最初のgetActiveはメッセージボックスを返し、2番目のトリガーはウィンドウを返しますか? 両方のウィンドウが閉じています。

乾杯!

于 2013-08-30T13:03:11.990 に答える
-2

メッセージボックスを保持したままウィンドウを閉じることはできないと思います。できることは、ウィンドウが閉じられたら、同じテキストで新しいメッセージ ボックスを表示することです。

于 2013-08-30T06:30:15.920 に答える