2009-04-10 3 views
0

У меня есть веб-приложение, которое широко использует GXT (версия 1.2.2). Я хотел бы предупредить пользователя, если они вносят изменения, но не сохраняют.Какие события я могу уловить, когда пользователь покидает сетку GXT?

Когда я использую сетку во всплывающем диалоговом окне, единственный выход для пользователя - это кнопка (либо Закрыть, либо ОК). Если я добавлю кнопку SelectionListener в кнопку Close, я могу выполнить проверку «isDirty()» и предупредить пользователя.

Если я не использую диалоговое окно, ограничение на выход из страницы отсутствует. Пользователь может щелкнуть по боковому меню, выбрать другую вкладку, нажать кнопку обновления или следующей страницы, которая у нас есть на каждой странице. Я мог бы выслушать событие для каждого из них, но есть ли более простой способ? Что-то вроде события «перед выгрузкой», которое срабатывает?

ответ

0

Window.addCloseListener

Или в GWT 1.6:

Window.addCloseHandler

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

+0

Я попробовал это, но это не сработало, я полагаю, так как окно не закрывается. Я просто перехожу к другой сетке или вкладке или странице. – CoverosGene

+0

Я вижу. Если сетка действительно разгружается, тогда ваша единственная надежда заключается в подключении метода onDetach() к виджету. Нет слушателя, поэтому вам придется перегружать его в рамках подкласса. Если вкладка изменена, но сетка остается скрытой, то вам совершенно не повезло и нужно слушать все. –

0

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

Window.addListener(Events.Close, 
    new Listener<ComponentEvent>() { 
      public void handleEvent(ComponentEvent be) { 
       //Do something 
      } 
}); 

или

Window.addListener(Events.Detach, 
     new Listener<ComponentEvent>() { 
       public void handleEvent(ComponentEvent be) { 
        //Do something 
       } 
    }); 
Смежные вопросы