datagrid a filtrování
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jirkaa
- Člen | 5
Zdravím, jsem v nette nováček, tak se omlouvám, pokud bude řešení nějak triviální. Ale dva dny nad tím sedím a tak jsem se rozhodl se zeptat vás.
Mám dva datagridy. V 1. je seznam pacientů. V 2. po rozkliknutí je seznam vyšetření.
Kod:
protected function createComponentPrehledPatients($name){
$grid = new DataGrid;
$grid->addColumn('firstname', 'Jméno')->addFilter();
$grid->addColumn('surname','Přijmení')->addFilter();
$grid->addColumn("personal_id", "RČ")->addFilter();
$grid->addDateColumn('birthday', 'Narození', '%d.%m.%Y');
// nastavíme klíč pro akce
$grid->keyName = 'pid';
// přidáme sloupec pro akce
$grid->addActionColumn('Actions');
// a naplníme datagrid akcemi pomocí továrničky
$grid->addAction('Smaž', 'deletePatient!', Html::el('span')->class('icon icon-del'), $useAjax = TRUE);
$grid->addAction('Zobraz', 'view', Html::el('span')->class('icon icon-detail'), $useAjax = FALSE);
$patients = new Patients();
$grid->bindDataTable($patients->getDataSource());
$this->addComponent($grid, $name);
}
protected function createComponentPrehledVysetreni($name){
$grid = new DataGrid;
$pid = $this->getParam("pid");
$grid->addDateColumn('date', 'Datum vyšetření', '%d.%m.%Y');
// nastavíme klíč pro akce
$grid->keyName = 'iid';
// přidáme sloupec pro akce
$grid->addActionColumn('Actions');
// a naplníme datagrid akcemi pomocí továrničky
$grid->addAction('Smaž', 'deleteInvestigation!', Html::el('span')->class('icon icon-del'), $useAjax = TRUE);
$grid->addAction('Zobraz', 'detailInvestigation', Html::el('span')->class('icon icon-detail'), $useAjax = FALSE);
$investigation = new Investigation();
$grid->bindDataTable($investigation->getDataSourceByPid($pid));
$this->addComponent($grid, $name);
}
mám dvě view kde to zobrazuji. V prvním datagridu kliknu na view a zobrazí se mi druhý datagrid. U něj ale mám problém, kde se po kliknutí na seřazení data z datagridu ztratí (flash message: Empty datasource given.)
datasource:
public function getDataSourceByPid($pid){
return dibi::dataSource('SELECT * FROM %n',$this->table,' WHERE [pid]=%s',$pid);
}
Myslím, že to je tím, že při řazení (či jiné akci) prostě ztratím informaci o hodnotě pid. Nevím ale jak ji tam dodat. Může mi někdo prosím poradit?
PHP mám 5.2.12, Nette 0.9.3