DataGrid – filtrování a bindDataTable
- toka
- Člen | 253
Zdravím.
Mám DataGrid, do kterého potřebuji načítat data podle
proměnné, která je předána metodou $_GET
. Pokud si proměnou
nastavím jako private
v rámci prezenteru, tu pak naplním
v renderu, může se stát, že createComponent
se
vytvoří dříve, než-li je proměnná inicializována v renderu –
výsledek nefunguje tak, jak má. Pokud řeším situaci následovně:
// ---------------------------------------------------------------------------
public function renderDetailSubscription($id_registrace) {
$this['clientsGrid']->bindDataTable($this->model->getAllClients($id_registrace));
}
Tak je vše v pořádku, ale z pro mne neznámého důvodu nemůžu jednak
využít $grid->allowOperations('');
, dojde k výjimce, ale
hlavně, a to nechápu, nefunguje mi filtrování – řazení ano. Pokud
přesunu načítání dat prostřednictvím modelu přímo do
createComponent
a definuji id
ručně, tedy
„natvrdo“, vše funguje tak, jak má.
Z toho plynou dva dotazy – máte někdo nápad, jak situaci řešit, resp. byl by někdo ochoten, alespoň náznakem, mi ukázat, jak toto řešíte vy – pokud potřebujete „propašovat“ proměnnou tak, aby se pomocí ní složil dotaz, jehož výsledek se ocitne v DataGridu – obecně nejen v něm.
Děkuji.
Editoval toka (3. 4. 2010 13:49)
- Ondřej Mirtes
- Člen | 1536
V továrničce se na proměnnou odkaž pomocí $this->getParam(‚id_registrace‘), anebo čistěji, v actionDetailSubscription:
public function actionDetailSubscription($id_registrace) {
$this['clientsGrid']->bindDataTable($this->model->getAllClients($id_registrace));
}