Řazení upravených data v Datagridu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Arnie
Člen | 4
+
0
-

PHP 5.2.9–2
Nette Framework 0.9.2
DataGrid 0.9.2

Ahoj, chci se zeptat, jestli lze řadit v DataGridu data získaná voláním callbacku. Z modelu dostanu DibiDataSource a mám v něm 4 sloupce navíc (např. id), který v DG přepíšu voláním callbacku. V tom mám funkci, která provede nějaký výpočty a vrátí číslo. V DG se to zobrazí správně, ale řadí se to pořád podle toho sloupce, který jsem získal v DataSource (takže podle id).
Potřeboval bych vědět, jestli to jde a případně postrčit správným směrem. Myslím, že kód zatím není třeba.
Díky za odpověď.

Panda
Člen | 569
+
0
-

DataGrid řadí data pomocí DataSource, tedy na úrovni databáze. Pokud tedy chceš řadit podle vypočtených dat, bude potřeba výpočty z callbacku přesunout do SQL dotazu.

Arnie
Člen | 4
+
0
-

Díky za odpověď. Už jsem nějak zkoušel přidat ty data do DataSource, ale nějak mi to moc nešlo. Teď alespoň vím, že by to tak mělo jít a zbytek už bude otázka mého důvtipu :)

Arnie
Člen | 4
+
0
-

Fakt mi to nejde, důvtip selhal. Postrč mě trošku blíž, jak bych mohl data z callbacku dostat do sql dotazu. Stačí obecně.

Panda
Člen | 569
+
0
-

Hm, tak koukám, že v posledním dibi to nejde (nebo nevím jak), neboť David odstranil DibiVariable…

Ve starších verzích by měla fungovat tato konstrukce:

$dataSource->select(array('*', new DibiVariable('[colA] * [colB] AS [colC]', 'sql')));

Samozřejmě takto jdou převést jen jednoduché callbacky, na složitější bude potřeba trochu víc databázové magie (uložené procedury a tak).

Arnie
Člen | 4
+
0
-

Díky za snahu