DataGrid nejenom nefiltruje
- king12345
- Člen | 6
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í
- king12345
- Člen | 6
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
- king12345
- Člen | 6
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
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.