Zpracování operace nad více řádky datagridu v tabcontrolu
- blacksun
- Člen | 177
Ahoj,
snažím se rozchodit datagrid v tabcontrolu pro jednoduchou administraci, ale nedaří se mi zpracovat operaci nad více řádky najednou.
V příkladu k datagridu se v operaci získává formulář přes parent na odesílacím tlačítku a grid pomocí továrničky na komponentu, resp. getComponent(nazev);
Když jsem se pokoušel přepsat si vytvoření datagridu do tabu přes továrničku createComponent($name) místo přímo v metodě createTabXY, tak dostávám chybu při volání metody addComponent, že komponenta tabs již existuje, i když je to podle call stacku první volání addComponent..
Trocha kódu asi vysvětlí lépe:
<?php
public function createComponent($name)
{
switch ($name)
{
case 'personsDataGrid':
$model = new MyModel('persons');
$grid = new DataGrid;
$renderer = new DataGridRenderer;
$grid->setRenderer($renderer);
$grid->itemsPerPage = 10; // display 10 rows per page
$grid->displayedItems = array('all', 10, 20, 50); // items per page selectbox items
$grid->bindDataTable($model->getPersons($personColumns));
$grid->multiOrder = FALSE; // order by one column only
.
. atd dle prikladu na datagrid
.
$this->addComponent($grid, $name);
return;
case 'tabs':
$tc = new TabControl($this,$name);
$tc->mode = TabControl::MODE_LAZY;
$tc->sortable = true;
$t = $tc->addTab("personsDataGrid");
$t->header = "Osoby";
$t->contentFactory = array($this,"createTabPersonsDataGrid");
$this->addComponent($tc, $name);
return;
default:
parent::createComponent($name);
return;
}
}
/* Tab factories */
function createTabPersonsDataGrid($name,Tab $tab){
return $this->getComponent('personsDataGrid');
}
// ### handle na akce nad osobami ###
function handlePersonsActions(SubmitButton $button)
{
$this->flashMessage('aaa', "info");
$form = $button->getParent();
$grid = $this->getComponent('personsDataGrid');
$values = $form->getValues();
$this->flashMessage(debug::dump($values),'info');
}
}
?>
Nenakopnul byste mě někdo, prosím, jak správně integrovat datagrid s tabcontrolem tak, aby fungovaly hromadné operace? V demu k tabcontrolu je v metodě pro zpracování jen hláška, že jde o demo..
Předem díky
Editoval blacksun (5. 10. 2009 23:32)
- blacksun
- Člen | 177
Tak nakonec se mi to povedlo vyřešit novým způsobem tvořením komponent createComponent<Name>, kdy ve vytvoření tabu volám toto:
<?php
function createTabPersonsDataGrid($name,Tab $tab){
$grid = $this->getComponent('personsDataGrid');
$grid->render();
}
?>
Pokud použiju return $grid, tak dostanu výjimku, že komponenta musí být připojena k Tabu.