Datagrid – strankovani, pocet zobrazenych zaznamu, ajax PHP5.3, dibi 1.3
- gerades
- Člen | 40
Ahoj,
uz docela hledam nejakou verzi datagridu, ktera by mi fungovala :)
jen rychla otazka, existuje Datagrid pro verzi PHP5.3 a dibi 1.3? Nebo jina komponenta ktera by poskytovala: zobrazeni zaznamu z DataSource + strankovani a moznost nastaveni pocetu zobrazenych zaznamu?
Predem diky za help :-)
- gerades
- Člen | 40
Na Gridito jsem se dival, ale myslim ze neumi nastaveni „pocet zobrazenych zaznamu“. Alespon co jsem tady videl: http://griddemo.janmarek.net/document_root/
- Aurielle
- Člen | 1281
Samozřejmě že to Gridito umí, případnou funkcionalitu si dopíšeš (daná třída musí extendovat Gridito\Grid):
/** @persistent */
public $items = 20;
protected function setupGrid() {
//...
$this->setItemsPerPage($this->items);
}
public function handleChangeItems($items)
{
if($this->presenter->isAjax())
$this->invalidateControl();
}
V šabloně – třeba:
<div class="float left">{_'Show'}
<a n:href="changeItems!, 20" n:class="$control->getAjaxClass()"><strong n:tag-if="$itemsPerPage == 20">20</strong></a>
-
<a n:href="changeItems!, 50" n:class="$control->getAjaxClass()"><strong n:tag-if="$itemsPerPage == 50">50</strong></a>
-
<a n:href="changeItems!, 100" n:class="$control->getAjaxClass()"><strong n:tag-if="$itemsPerPage == 100">100</strong></a>
{_'items per page'}</div>
- gerades
- Člen | 40
/** @persistent */ public $items = 20;
tady bych se rad zeptal, proc tvorit dalsi promenou pro ulozeni poctu zaznamu? nemuzem na to pouzit uz existujici $itemsPerPage z Paginatoru, nebo $defaultItemsPerPage z Grid?
protected function setupGrid() { //... $this->setItemsPerPage($this->items); }
metoda setupGrid() neexistuje v tride Grid. proc ji tedy vytvaret? pripadne, kdo/kdy ji musi zavolat?
public function handleChangeItems($items) { if($this->presenter->isAjax()) $this->invalidateControl(); }
tady by asi melo byt jeste nastaveni persistentni promene $items, je to tak?
{_'Show'}{_'items per page'}
potom nechapu tady ty dva vyrazy.
predem diky za trpelivost a odpovedi
- JakubJarabica
- Gold Partner | 184
Ešte k pôvodnej otázke. Používam starý klasický Datagrid, ale z Githubu v DEV vetve: https://github.com/…rid/tree/dev. nahodil som ho v rámci prepisovania celej aplikácie do PHP 5.3, nette som použil tri dni starý build, dibi 1.5RC, s tým, že ďalší krok bude zrušenie Datasource a následné nahradenie za Fluent(kvôli indexom v subselectoch v MySQL).
Všetko išlo bez problémov, akurát som mal problém s týmto: https://github.com/…taSource.php#L62, ale to som jednoducho prepísal aby vytiahlo unikátne hodnoty filtrovaného stĺpca z klonovaného datasource(do pôvodného sa začali nabalovať where podmienky a nevracalo to potom všetky stĺpce).
- gerades
- Člen | 40
Tak uz jsem to pochopil a dodelal, reseni je tohle:
public function __construct($presenter, $name) {
parent::__construct($presenter, $name);
$this->setItemsPerPage($this->itemsPerPage);
}
/** @persistent */
public $itemsPerPage = 5;
public function handleChangeItems($itemsPerPage) {
if ($this->presenter->isAjax())
$this->invalidateControl();
}
vlastne stejne co postnul mr. gmvasek :) ale davam to se, kdyby to nekomu melo pomoct…
Editoval gerades (5. 2. 2011 18:49)