extjs store.load после form.submit - PullRequest
       4

extjs store.load после form.submit

0 голосов
/ 01 октября 2018

Я пытаюсь перезагрузить Extjs-хранилище после того, как пользователь загрузил PDF.

Процесс выглядит следующим образом:

  • Пользователь дважды щелкает ячейку в GridPanel
  • Форма создана, отправлена, а процедура в бэкэнде создает PDF и вносит некоторые изменения в данные хранилища GridPanel
  • PDF будет загружен пользователем

Но как перезагрузить магазин с новыми данными в нем?AfterRender при отправке формы не существует.

Я думаю, что это должно быть легкой проблемой, но у меня нет идей, как ее решить.

Ответы [ 3 ]

0 голосов
/ 04 октября 2018

вот немного моего кода:

function makeprintForm(array, setStatusX, grid) {

     var filename = 'asd.pdf';

     var url_pdf = 'someURL?FileName=' + filename;

     var printForm = Ext.create('Ext.form.Panel', ({

          url: currentContextPath + encodeURIComponent('http://' + host + ':' + port + url_pdf),
          hidden: true,
          id: 'printForm',
          name: 'printForm',
          method: 'post',
          standardSubmit: true,
          target: '_blank',
          items: [{
                    xtype: 'textfield',
                    fieldLabel: 'print_id',
                    name: 'print_id',
                    value: array
               },
               {
                    xtype: 'textfield',
                    fieldLabel: 'username',
                    name: 'username',
                    value: username
               },
               {
                    xtype: 'textfield',
                    fieldLabel: 'language_field',
                    name: 'language',
                    value: language
               }
          ]
     }));

     Ext.getCmp('printForm').getForm().submit({ success : this.reload_grid_after_submit(), scope: document.getElementById(nameSpace + 'formIS')});
}

function reload_grid_after_submit(){
     console.log('reload_grid_after_submit');
     Ext.getCmp('grid').getStore().proxy.setExtraParam('status', 'NEW');
     Ext.getCmp('grid').getStore().load();
}
0 голосов
/ 22 октября 2018

Вы можете использовать форму в окне предупреждения.Я использовал окно здесь.Затем, отправив форму, вы можете использовать findRecord, чтобы найти запись в магазине и отредактировать ее.Для лучшего объяснения, пожалуйста, найдите скрипку здесь .PS извините за задержку я был в отпуске.Пожалуйста, отметьте его как ответ, если он правильный, чтобы он помогал другим людям в будущем.Или, пожалуйста, прокомментируйте, если есть что-то, что нужно изменить.Спасибо

Ext.getCmp('myGrid').addListener('rowdblclick', function (a, b, c, d) {

    win = new Ext.Window({
        width: 300,
        height: 150,
        draggable: false,
        border: false,
        modal: true,
        resizable: false,
        items: [{
            xtype: 'textfield',
            fieldLabel: 'What is your new name',
            id: 'newNameField'
        }, {
            xtype: 'button',
            name: 'sampleButton',
            text: 'Change My Name!',
            style: 'margin:15px',
            width: 150,
            handler: function () {
                name = Ext.getCmp('myGrid').getStore().getAt(d).data['name'];
                console.log(name);
                var newName = Ext.getCmp("newNameField").value;
                console.log("replacing " + name + " with " + newName + " in the store");
                var entry = userStore.findRecord('name', name);
                entry.set('name', newName);
                win.hide();

            }
        }]
    })
    win.show();

})
0 голосов
/ 02 октября 2018

Это фрагмент кода, который я нашел в своей базе кода (внутри контроллера):

var form = button.up().up().down('form').getForm();
form.submit({ success : this.onFileUpload, failure: this.onFileUpload, scope: this});
...
onFileUpload: function (form, action){
    var data = action.result.data;
    ...
    if (action.result.success){
    ...
       //**your store reload could be here!**
    ...
    } else {
      ...
    }
}

Мой ответ на форму не отвечает файлом (просто какой-то стандартный возврат html), но я думаю, что это должноработа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...