DataGrid nejenom nefiltruje

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

Mám problém s komponentou datagrid která nefunguje.

Veškeré formuláře co se v této komponentě využívají (Tlačítko na filtrování sloupců, input na skok na určitou stránku, nebo na určení kolik položek se má vypsat) se odešlou, ale stránka se vykreslí naprosto stejně, a bez jakýchkoli změn a inputy jsou po odeslání prázdné.

Ze zoufalství jsem se vše pokusil rozběhnout na čistém Skeletonu, ale bez úspěchu.

HomepagePresenter :

<?php
class HomepagePresenter extends BasePresenter
{


protected function createComponentGrid($name)
{
	$grid = new DataGrid;
	$grid->bindDataTable(dibi::dataSource('SELECT * FROM objednavky'));
	$grid->itemsPerPage = 20;

	$grid->multiOrder = FALSE;

	$grid->addColumn('id', 'id');
	$grid->addColumn('jmeno', 'jmeno')->addFilter();
	$grid->addColumn('prijmeni', 'prijmeni')->addFilter();
	$grid->addActionColumn('Akce');

	$grid->keyName = 'id';

	$renderer = $grid->getRenderer();

	$this->addComponent($grid, $name);
}


}
?>

V šabloně je :

....
{widget grid}
....

Zbytek, tedy i nastavení routování je defaultní ze Skeletonu.

Děkuji za jakékoli nakopnutí

Honza Kuchař
Člen | 1662
+
0
-

Verze PHP, Nette a Dibi?

bazo
Člen | 620
+
0
-

naco tam mas tento riadok?
>$this->addComponent($grid, $name);

pouzivas ajax?

king12345
Člen | 6
+
0
-

Bez toho řádku mi Nette hází „Component with name ‚grid‘ does not exist.“ Neboli to bez něj nezaregistruje komponentu.

S AJAXem jsem se ještě nenaučil, takže nepoužívám. Možná je chyba v tom že DataGrid s ním počítá. Můžeš mi popsat jak snadno a rychle ho tam dodat ?

Nette a Dibi mám přesně v těch verzích co DataGrid vyžaduje, tedy Nette 0.9.0 a dibi 1.1

bazo
Člen | 620
+
0
-

skus pouzit aktualne verzie, a datagrid 0.9.2. a ten riadok daj do prec. a namiesto neho napis

return $grid;

Editoval bazo (15. 5. 2010 22:54)

king12345
Člen | 6
+
0
-

Nejraději bych si nafackoval… Neustále jsem datagrid stahoval z odkazů pod článkem a celou tabulku s aktuální verzi jsem prostě přehlížel… Datagrid v nové verzi funguje

Ještě když tady mám takové odborníky tak se nemohu nezeptat na jednu věc co mne trápí.

Proměnnou

<?php
$grid->keyName = 'id';
?>

se nestavuje jaký sloupec se bude předávat prováděné akci, jak si ale takto odeslanou proměnou vyzvednu v akci která se datagridu odešle ?
Doteď jsem to dost nepěkně hackoval, tak, že se mi ID přidává do URL

<?php
$renderer->onActionRender[] = array($this, 'gridonActionRender');
...
public function gridonActionRender(Html &$action, DibiRow $data)
{
	$action->attrs["href"] .= $data["id"];

	return $action;
}
?>

To je čuňárna,co ? :D

**Samozřejmě děkuji všem zúčastněným za rozlousknutí problému který jsem si zavinil jen a jen sám :) **

Majkl578
Moderator | 1364
+
0
-

Instance se nepředávájí referencí.

Před interpunkcí se nepíše mezera.

Komponenta se neregistruje pomocí $this->addComponent($grid, $name);, ale pomocí vrácení její instance přes return: return $grid;.

Psát ?> na konci souboru je zbytečné, akorát to způsobuje chyby pokud za tím máš řádek navíc.