Datagrid v „ajax“ módu nefunguje
- wotaen
- Člen | 82
Nette: 0.9.2
DataGrid: 0.9.2
PHP: 5.2.12
Ahoj všichni, implementuji grid v aplikaci a mám problém. Pokud
neincluduju JS knihovny pro podporu ajaxu, grid funguje normálně (řazení,
stránkování), jakmile připojím js knihovny, tak aby fungoval ajax, grid
přestane fungovat. Data se zobrazí ale stránkování atd nejde, požadavek se
sice odešle (viz přechod na 2 stránku)
?grid-goto=2&grid-itemsPerPage=20&do=grid-page
zavolá se handleGoto, správně se nastaví, že má být stránka č. 2 ale výsledný dotaz se již nevykoná (dotaz na počet řádků v tabulce ještě jo)
Presenter:
<?php
protected function createComponentGrid($name) {
$grid = new DataGrid;
$model = new SPUser;
$grid->bindDataTable($model->getDataSource());
$grid->addColumn('NAME', 'Name');
return $grid;
}
?>
Model:
<?php
public function getDataSource() {
return $this->connection->select('*')
->from('users')
->toDataSource();
}
?>
Template:
@{control grid}
používám dibi firebird.php.
Díky, Michal
Editoval wotaen (12. 1. 2010 15:33)
- Jakub Šulák
- Člen | 222
Nette je podporováno od verze 5.2.0 – problém může být v tvé verzi 5.1.12
je to jen tip
- romansklenar
- Člen | 655
U firebirdu je problém, že nepodporuje seekování, proto je třeba podědit a přepsat si metodu getRows() tak aby data rovnou fetchnula.
/**
* Iterates over datagrid rows.
* @return ArrayIterator
*/
public function getRows() {
$arr = $this->dataSource->fetchAll();
$rows = new ArrayObject($arr);
return $rows->getIterator();
}