Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   заморочка с гридом (https://javascript.ru/forum/extjs/21417-zamorochka-s-gridom.html)

ilshat 08.09.2011 15:23

заморочка с гридом
 
замучался искать
может кто знает

при работе стореджа с сервером (например удаление строки) командой
getStore().remove(rec)
через аяксовый прокси - екст сначала удаляет строку из стореджа и соответственно строчку из грида и только потом посылает запрос на сервер на удаление.

вопрос в том как обработать ситуацию - если удалить на стороне сервера не получилось а строки в гриде и в сторедже уже нет.

Костэн 09.09.2011 09:53

Цитата:

Сообщение от ilshat (Сообщение 125564)
замучался искать
может кто знает

при работе стореджа с сервером (например удаление строки) командой
getStore().remove(rec)
через аяксовый прокси - екст сначала удаляет строку из стореджа и соответственно строчку из грида и только потом посылает запрос на сервер на удаление.

вопрос в том как обработать ситуацию - если удалить на стороне сервера не получилось а строки в гриде и в сторедже уже нет.

Попробуйте следующим образом:
1.
Ext.Ajax.request({
url: 'serverPageURL',
params: {
REMOVERECORD: Ext.getCmp('gridID').getSelectionModel().getSelected().data.recordID,
},
success: function(response){
result = Ext.util.JSON.decode(response.responseText);
if (result.result == 1) {
Ext.getCmp('gridID').store.removeAll();
Ext.getCmp('gridID').store.reload();									
}
else if (result.result == 0) {
Ext.Msg.alert('Системное сообщение', result.messageText);
}
},
failure: function(response){
Ext.Msg.alert('Системное сообщение', 'Не удалось выполнить запрошенное действие');
});

2. На стороне сервера принимаете значение "REMOVERECORD", делаете запрос на удаление, после которого, если используете PHP, идёт or die('"result":"0","messageText":"Не удалось удалить выбранную запись"') - это по желанию, но будет полезным, если удаления не произойдёт.
3. После этого пишете - echo '({"result":"1"})';

ilshat 11.09.2011 17:46

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

Костэн 12.09.2011 16:24

Цитата:

Сообщение от ilshat (Сообщение 126007)
да. как вариант можно сделать и так.
Но тогда теряется смысл аяксового прокси - если создавать запросы и обработку явным образом.

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

ilshat 13.09.2011 13:13

Решение то подходящее. Только больше похоже на заплатку)))
хотя чем больше работаю с ескстом, то тем больше убеждаюсь что продукт более чем сырой...


Часовой пояс GMT +3, время: 19:25.