konto usunięte

Temat: Problem z Ext.MessageBox

Witam,
Mam następujący problem:
Tworzę nowy Ext.TabPanel. Jeden tab to FormPanel, drugi to GridPanel.
Przy wprowadzeniu zmian w formularzu i przy przejściu do drugiego tab'a ma pokazać się message box z pytaniem, czy zapisać wprowadzone zmiany. Wszystko jest podpięte do eventu beforetabchange
Cała obsługa działa z jednym małym problemem, a mianowicie, gdy chce wyświetlić message box (nie tylko confirm, ale każdy typ) pokazuje mi się on pod TabPanelem? Co śmieszne, gdy klikam przycisk submit na formularzu, to wyświetla mi się bez problemu message box wait i odpowiedni komunikat po wszystkim (w odpowiednim miejscu).
Na drugim tabie mam GridPanel, gdzie również pokazuje message boxy i z nimi nie ma również żadnych problemów.
Ktoś ma jakiś pomysł?
Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Problem z Ext.MessageBox

Sebastian Malaca:
Witam,
Mam następujący problem:
Tworzę nowy Ext.TabPanel. Jeden tab to FormPanel, drugi to GridPanel.
Przy wprowadzeniu zmian w formularzu i przy przejściu do drugiego tab'a ma pokazać się message box z pytaniem, czy zapisać wprowadzone zmiany. Wszystko jest podpięte do eventu beforetabchange
Cała obsługa działa z jednym małym problemem, a mianowicie, gdy chce wyświetlić message box (nie tylko confirm, ale każdy typ) pokazuje mi się on pod TabPanelem? Co śmieszne, gdy klikam przycisk submit na formularzu, to wyświetla mi się bez problemu message box wait i odpowiedni komunikat po wszystkim (w odpowiednim miejscu).
Na drugim tabie mam GridPanel, gdzie również pokazuje message boxy i z nimi nie ma również żadnych problemów.
Ktoś ma jakiś pomysł?

Która wersja, 3 czy 4 ?
Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Problem z Ext.MessageBox

Sebastian Malaca:
typ) pokazuje mi się on pod TabPanelem? Co śmieszne, gdy klikam

Ale pod panelem czy pod zakładkami panelu ?

konto usunięte

Temat: Problem z Ext.MessageBox

Grzegorz K.:
Która wersja, 3 czy 4 ?
Wersja 3
Grzegorz K.:
Ale pod panelem czy pod zakładkami panelu ?
Pod panelem.

Pod spodem mam jeszcze gridPanel i wygląda tak, jakby message box był w jakiś sposób nadal z tym gridem powiązany.
Usunąłem wszystkie ustawienia, więc obecnie każdy panel ma wszystko defaultowo, podpięty plugin po odchudzeniu jedynie wyświetla message box.
Jest również podpięty (ten plugin) do button'a submit w formPanel (pierwszy tab) i tam działa świetnie, czyli message box wyświetla się nad wszystkimi wcześniej utworzonymi obiektami.
Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Problem z Ext.MessageBox

Wywołanie MsgBox zrobiłeś jako referencje dla każdej akcji oddzielnie (jako inną), czy może dla każdego przycisku jest wywołanie obiektu ?
MessageBox to klasa singletonowa, może ci się zapięła gdzieś w kodzie na obsługę innego obiektu, albo obiekt nie został zniszczony.

konto usunięte

Temat: Problem z Ext.MessageBox

Wywołanie jest dla każdej akcji oddzielnie.
Poniżej kod:

new Ext.TabPanel({
activeTab: 0,
id: 'tabPanel_id',
items: [
new Ext.form.FormPanel({
cls: 'xf-windowForm',
bodyCssClass: '',
autoHeight: false,
autoScroll: true,
border: false,
layout: 'form',
buttonAlign: 'center',
monitorValid: true,
labelAlign: 'right',
labelPad: 10,
defaults: {
msgTarget: 'under',
anchor: '100%'
},
id: 'formPanel_id',
title: translate('tab_title-general'),
items: [
new Ext.form.TextField({
fieldLabel: 'label',
name: 'name',
id: 'id'
})
],
buttons: [
new Ext.Button({
text: 'save',
type: 'submit',
formBind: true,
plugins: {
init: function (component) {
component.on({
click: function() {
Ext.MessageBox.confirm('title', 'messsage', Ext.emptyFn);
}
});
}
}
})
]
}),
new Ext.Panel()
],
plugins: {
init: function(component) {
component.on({
beforetabchange: function() {
Ext.MessageBox.confirm('title', 'messsage', Ext.emptyFn);
}
});
}
}
});

Wywołanie message box'a w pluginie podpiętym do button'a działa idealnie, problem jest z tym drugim. Nie zależy to również od kolejności wywołania.
Plugin z button'a nakłada maskę na tabPanel i wyświetla message box, natomiast ten z tabPanelu nakłada maskę na grida poniżej i message box wyświetla również pod tabPanelem (nad gridPanelem).
Z-index message box jest niższy niż tabPanel, ale te atrybuty nakłada Ext JS i nie wiem dlaczego tak się zachowuje.
Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Problem z Ext.MessageBox

Ja bym zrobił tak:

new Ext.TabPanel({
activeTab: 0,id: 'tabPanel_id',
items: [
new Ext.form.FormPanel({
//(...)
buttons: [
new Ext.Button({
text: 'save',
type: 'submit',
formBind: true,
listeners:{
'click': function(){
Ext.MessageBox.confirm('title', 'messsage', Ext.emptyFn);
},scope:this
}
})
]
}),
new Ext.Panel()

],
listeners:{
'beforetabchange': function() {
Ext.MessageBox.confirm('title', 'messsage', Ext.emptyFn);
},scope:this
}
});

konto usunięte

Temat: Problem z Ext.MessageBox

Ze scope również nie działa.
Dosyłam jednak jeszcze raz kod. Usunąłem wszystko co zbędne i jest to obecnie jedyny javascript na stronie.
Zapomniałem dodać, że tabPanel jest umieszczony w Ext.Window, a to dość istotna informacja.


Ext.onReady(function(){
new Ext.Window({
initHidden: false,
width: 700,
title: 'WindowTitle',
items: [
new Ext.TabPanel({
items: [
new Ext.Panel({title: 'Title1'}),
new Ext.Panel({title: 'Title2'})
],
plugins: {
init: function(component) {
component.on({
beforetabchange: function(t,c,n) {
Ext.MessageBox.confirm('MessageBoxTitle', 'Confirm message.', Ext.emptyFn, component);
}
});
}
}
})
]
});
});


Próbowałem również używać handlerów i listenerów zamiennie z pluginami, ale to zmienia jedynie sposób podłączenia funkcji do eventa.Sebastian Malaca edytował(a) ten post dnia 14.06.11 o godzinie 14:30
Grzegorz K.

Grzegorz K. Angular, JavaScript,
Frontend, UI

Temat: Problem z Ext.MessageBox

Sebastian Malaca:
Ze scope również nie działa.
do eventa.

Masz:


windows = new Ext.WindowGroup(); //<-Manager

var wnd = new Ext.Window({
initHidden: false,
width: 700,
title: 'WindowTitle',
manager:windows, //<- rejestrujemy okno w managerze
items: [
new Ext.TabPanel({
items: [
new Ext.Panel({title: 'Title1'}),
new Ext.Panel({title: 'Title2'})
],
plugins: {
init: function(component) {
component.on({
beforetabchange: function(t,c,n) {
Ext.MessageBox.confirm('MessageBoxTitle', 'Confirm message.', Ext.emptyFn, component);

}
});
}
}
})
]
}).show();


windows.zseed = 7000; // <- Mały hack;

});

konto usunięte

Temat: Problem z Ext.MessageBox

Grzegorz K.:
windows.zseed = 7000; // <- Mały hack;
Uwielbiam takie małe hacki:)
Wielkie dzięki, wszystko działa tak, jak powinno.Sebastian Malaca edytował(a) ten post dnia 15.06.11 o godzinie 07:52

Następna dyskusja:

extjs - problem z formatką




Wyślij zaproszenie do