2013-04-11 3 views
1

Представьте себе две формы и одну сетку. Форма А состоит из комбокс. В полях отображаются данные из базы данных. Пользователь выбирает comboboxes, и результат представляет собой новую запись в хранилище сетки. Также возможно поместить новые значения/записи в выпадающие списки. (Нет вставки базы данных) Форма B состоит из нескольких текстовых полей. Это своего рода MasterDetail. Сетка - Мастер, Форма В - Деталь. В конце я хочу отправить форму B и магазин сетки по одному запросу (ajax). На стороне сервера я хочу хранить подробные данные и подключать их к существующим записям или даже создавать новые записи и подключать их. Я хочу запустить эти операции в контексте транзакций.ExtJS Как отправить форму и магазин по одному запросу?

Теперь я не знаю, что хорошего/наилучшей практики. Я попытался использовать метод синхронизации хранилища сетки и включить значения формы (формы B) в качестве дополнительных параметров. Это работает, но возможно, что после успешного запроса мне нужно сделать другой запрос с тем же (нетронутым) хранилищем (только с изменениями формы B), поэтому мне придется сбросить состояния записей. (синхронизация выполняет только изменения)

Возможно, для работы потребуется простой Ext.ajax.request(), но как передать магазин? Я могу добавить значения формы B в качестве параметра, но я не знаю, как добавить магазин? Нужно ли добавлять каждый элемент записи в конфигурацию params самостоятельно?

информации: серверная сторона PHP, MySQL дб

ответ

2
{// form submit button 

      id: 'save-frm', 
      text: 'Save', 
      handler: function(btn) { 
       //btn.setDisabled(true); 
       frm = this.up('form').getForm(); 
       if(frm.isValid()){ 

        var store_data = new Array(); 
        your_store.each(function(node){ 
          store_data.push(JSON.stringify({id: node.data.id, name: node.data.name})) 
        }) 
        frm.submit({ 
          waitMsg: 'Enregistrement en cours...', 
          submitEmptyText: false, 
          params:{store_data: JSON.stringify(store_data)}, 
          success: function(form, action){ 
           // 
          }, 
         failure: function(form, action){       
          // 
         } 
        }); 
       } 
      } 
} 

Вы можете отправить хранить данные как пары из ваших представить форму или с помощью Ajax.Request ON PHP стороны вы получаете магазин-данные используя $store_data = json_decode($_POST['store_data']);

1

Если значения формы B представляют собой подробную информацию о записи, она расширяет модель для включения этих полей и просто не отображает их в виде сетки.
Затем каждое изменение в форме B приведет к изменению поля записи и, следовательно, к обновлению.

+0

Это. Если это действительно мастер/деталь, то сетка и форма должны иметь один и тот же магазин. – James

Смежные вопросы