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.