Проблема закрытия окна ожидания окна Extjs - PullRequest
0 голосов
/ 17 мая 2011

Дорогие друзья. Я сталкиваюсь с проблемой при закрытии моего окна. Я вызываю вызов ajax, подобный этому

function callPreviewWindow(){   
    $.ajax( {
    type : "GET",
    url : "/ajax/eform/preview.do",
    cache : false,
    dataType : "text/html",
    timeout: 40000,
              beforeSend : function() {
        showWaitingDialog("Please wait...");
    },

    error: function (xhr, err)
    {
        resolveAjaxError(xhr, err);
    },
    success : function(data) {  
         showPreviewWindow(data);

    }
 });    

}

Но выполнение этого вызова ajax заняло больше времени, поэтому увеличилось время ожиданиядо 40000. и он работает нормально и отображает следующее окно.

function showPreviewWindow(htmlData){
var previewWindow =  new Ext.Window({
        title: "E-Form View",  
        width:650,
        id:'previewWindow',
        autoHeight: true,
        html: htmlData,
        modal: true,
        y: 150,
        listeners: { 
        beforeclose: function () { 
            searchVisible = false;                      
          } 
        },
      buttons: [
                 { 
                     text: 'Close', handler: function() {
                      previewWindow.close();                                            
                     }
                 }
                ]
 });

previewWindow.show(this);               

}

Но проблема в том, что при нажатии на кнопку закрытия, я могу закрыть окно.Но showWaitingDialog (который я вызывал перед отправкой события в функции вызова ajax) не закрывается.

Пожалуйста, помогите мне закрыть это также при нажатии кнопки закрытия.

Заранее спасибо.Sathya

1 Ответ

0 голосов
/ 17 мая 2011

Похоже, что диалог и окно не связаны. Так что в вашем близком обработчике вам нужно будет также закрыть диалоговое окно, а также ваше окно. То, как вы это сделаете, будет зависеть от того, что делает функция showWaitingDialog (), но вам, вероятно, потребуется сохранить ссылку на диалоговое окно, созданное в этом методе, а затем в своем обработчике закрытия вызвать метод в вашем диалоге (например, в диалоговом окне). .close ()), чтобы отменить это тоже. Для этого может потребоваться изменить метод showWaitingDialog (), чтобы он возвращал ссылку на диалоговое окно:

function showWaitingDialog() {
    // dialog is created as normal

    // add something like this
    return dialog;
}

Затем измените панель запуска и закройте обработчик, чтобы использовать сохраненный диалог:

// Dialog reference will be stored here    
var dialog;

function callPreviewWindow(){   
    $.ajax( {
        type : "GET",
        url : "/ajax/eform/preview.do",
        cache : false,
        dataType : "text/html",
        timeout: 40000,
        beforeSend : function() {
            // Store reference
            dialog = showWaitingDialog("Please wait...");
        },
        error: function (xhr, err) {
            resolveAjaxError(xhr, err);
        },
        success : function(data) {  
            showPreviewWindow(data);
        }
    }); 
}

function showPreviewWindow(htmlData){
    var previewWindow =  new Ext.Window({
        title: "E-Form View",  
        width:650,
        id:'previewWindow',
        autoHeight: true,
        html: htmlData,
        modal: true,
        y: 150,
        listeners: { 
        beforeclose: function () { 
            searchVisible = false;                      
          } 
        },
        buttons: [{ 
            text: 'Close', handler: function() {
                previewWindow.close();
                dialog.close();                                            
            }
        }]
    });

    previewWindow.show(this);     
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...