как загрузить маску при двойном щелчке сетки, чтобы дождаться появления подробного окна - PullRequest
0 голосов
/ 24 февраля 2012

участник форума У меня одна проблема при использовании свойства loadMask в extjs 4.0.2a.На самом деле у меня есть одна сетка, которая при нажатии открывает окно с подробной информацией.

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

при двойном щелчке сетки Я выполняю приведенный ниже код

projectEditTask: function(grid,cell,row,col,e) {
var myMask = new Ext.LoadMask(Ext.getBody(), {msg:"Loading.."});        
myMask.show();
var win = this.getProjectGanttwindow();  
win.on('show', myMask.hide, myMask);   
}

, но не знаю, загрузка не отображается, и после некоторого ожидания мое окно отображается правильно.

Я просто хочу, когда я дважды щелкаю по сетке.после того, как окно полностью загрузится. Сообщение о загрузке должно исчезнуть, и должно быть просмотрено подробное окно.

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

мой проект Ganttwindow -

Ext.define('gantt.view.projectmgt.projectGanttwindow' ,{
    extend: 'Ext.window.Window',
    alias : 'widget.projectganttwindow',
    requires: ['gantt.view.projectmgt.projectGanttpanel'],
    editform:1,
    id: 'projectganttwindow',
    title: 'Project Management',
    width: '100%',
    height: '100%', 
    closeAction: 'destroy',
    isWindow: true,
    flex:1,  
    isModal: true,
    constrain: true, 
    maximizable: true,  
     stateful: false,
     projectId: null, // this will be set before showing window

     listeners: {
         hide: function() {
            alert('hide');
           //var store = Ext.data.StoreManager.lookup('taskStore').destroyStore();
           //Ext.destroy(store);
           //store.destroyStore();
           console.log('Done destroying');
         }
    },

    initComponent: function() {
        var me = this;
        me.layoutConfig = {
            align: 'stretch'
        };
        me.items = [{
            xtype: 'projectganttpanel',
            allowBlank: false
        }];

        me.callParent(arguments);

        me.on({
            scope: me,
            beforeshow: me.onBeforeShow
        });
    },

    onBeforeShow: function() {      
        var projectId = this.projectId;
        console.log('BEFOR SHOW ::'+projectId);
        if(projectId != null) {
            var store = Ext.data.StoreManager.lookup('taskStore');
            store.load({
                params: {'id': projectId}
            });
        }
    }
});

1 Ответ

0 голосов
/ 24 февраля 2012

Попробуйте это

function loadMask(el,flag,msg){
var Mask = new Ext.LoadMask(Ext.get(el), {msg:msg});
if(flag)
    Mask.show();
else
    Mask.hide();

}

Когда вы нажимаете на сетку, вызывайте эту функцию

// Включить маску сообщения

loadMask(Ext.getBody(),'1','Please wait...');

После всплывающего звонка

// Отключить маску Сообщение

loadMask(Ext.getBody(),'','Please wait...');

...