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
+
0
-

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

Honza Kuchař
Člen | 1662
+
0
-

Zkus persistentní parametry.

Editoval honzakuchar (1. 3. 2010 14:11)

jirkaa
Člen | 5
+
0
-

to je přesně to co jsem potřeboval děkuji moc :)