MVCGrid/MVCForm обновляет строку MVCGrid после обновления MVCFord
Похоже, простая проблема, но я не могу найти решение.
У меня есть MVCGrid, используя столбец Expander, связанный с MVCForm. Я могу легко применить обновление через форму, но мне нужно обновить MVCGrid после обновления. В этом случае я отображаю PhysCity в MVCgrid, обновляю его через MVCForm и хочу, чтобы это изменение отображалось обратно в MVCGrid.
Спасибо!
Вот что у меня есть:
<?php
class page_cview extends Page {
function initMainPage(){
if(!$this->api->auth->isLoggedIn())$this->api->redirect('/');
$g=$this->add('MVCGrid');
$g->setModel('customer_cv',array('custname','Name','PhysAddr1','PhysCity','PhysState'));
$g->addColumn('expander','details','View/Update');
}
function page_details(){
//var_dump($_GET);
$f=$this->add('MVCform');
$f->setModel('customer_cv')
->loadData($_GET['id']);
$f->addSubmit("Update");
if($f->isSubmitted()){
$f->update();
$this->js()->univ()->successMessage('Saved')->closeExpander()->execute();
}
}
}
2 ответа
Вы можете использовать изящный трюк, который поможет вам обновить предметы, к которым у вас нет доступа к объекту.
$grid->js(true)->addClass('myreload');
$grid->js('myreload')->reload();
тогда где-нибудь еще
$this->js()->_selector('.myreload')->trigger('myreload')->execute();
Это устанавливает пользовательский обработчик события в jQuery, а затем запускает событие для сетки.
Спасибо, Романиньш! Мне нужно копнуть глубже в JQuery. Вот обновленная версия вышеупомянутого ATK4 MVCGrid/MVCForm для любого использования.
<?php
class page_cview extends Page {
function initMainPage(){
if(!$this->api->auth->isLoggedIn())$this->api->redirect('/');
$g=$this->add('MVCGrid');
$g->js(true)->addClass('myreload');
$g->js('myreload')->reload();
$g->setModel('customer_cv',array('custname','Name','PhysAddr1','PhysCity','PhysState'));
$g->addColumn('expander','details','View/Update');
}
function page_details(){
//var_dump($_GET);
$f=$this->add('MVCform');
$f->setModel('customer_cv')
->loadData($_GET['id']);
$f->addSubmit("Update");
if($f->isSubmitted()){
$f->update();
$this->js()
->_selector('.myreload')->trigger('myreload')
->univ()
->successMessage('Saved')
->closeExpander()->execute();
}
}
}