2012-01-22 44 views
2

看起來像一個簡單的問題,但我找不到解決方案。MVCGrid/MVCForm在更新MVCFord後更新MVCGrid行

我有一個MVCGrid使用鏈接到MVCForm的Expander列。我可以通過表單輕鬆應用更新,但是我需要在更新後刷新MVCGrid。在這種情況下,我在MVCgrid中顯示PhysCity,通過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(); 
     } 
} 
} 

回答

1

你可以用一個漂亮的技巧,可以幫助您刷新您沒有訪問該對象的項目。

$grid->js(true)->addClass('myreload'); 
$grid->js('myreload')->reload(); 

然後其他

$this->js()->_selector('.myreload')->trigger('myreload')->execute(); 

任何地方這將設置一個自定義事件處理程序的jQuery,然後觸發事件電網。

0

謝謝romaninsh!我需要深入研究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(); 
     } 
} 
}