Ublaboo – group a nepřekreslující se datagrid
- Alsatian
- Člen | 175
Ahoj.
Mám datagrid jako samostatnou komponentu (DatagridOfferControl). Přidal jsem si do něj hromadné mazání:
$grid->addGroupAction('Odstranit')->onSelect[] = [$this, 'groupDelete'];
Mazání potom vypadá nějak takto:
public function groupDelete(array $ids): void
{
...
foreach ($ids as $id) {
// proces mazání...
}
$this['offerGrid']->reload();
if ($this->getPresenter()->isAjax()) {
// V komponentě je datagrid jako komponenta: public function createComponentOfferGrid() {$grid = new DataGrid(); ...}
$this->redrawControl('datagrid');
}
else ...
}
Datagrid vykresluji šablonou opět komponenty (DatagridOfferControl.latte):
{snippet datagrid}
{control offerGrid}
{/snippet}
Datagrid se ale při odstranění položky nepřekreslí. Překreslování snippetu ale funguje, při dalším mazání se zneviditelní předchozí mazání. Vycházel jsem z příkladu na oficiálních stránkách
Není to proto, že je voláno mazání pomocí …->onSelect[] = [$this, ‚groupDelete‘]; a není tam handle? Kterým by se mazání provedlo ještě před vykreslením datagridu?
Kdyby někdo věděl jak postupovat, budu moc rád :) Děkuji.
EDIT: dále jsem zjistil, že i když odstraňuji položky pomocí vytvořeného tlačítka:
$grid->addAction('delete', '', 'Delete!')
->setIcon('trash')
->setClass('btn btn-danger ajax')
->setConfirmation(
new StringConfirmation('Odstranit záznam ID %s?', 'id') // pro ID %s
);
což jsem měl za to, že funguje správně – když vykreslím stránku s datagdidem a dám odstranit položku, odstraní se a správně se překreslí tabulka v níž odstraněný záznam již není. Pokud ale před odstraněním provedu změnu řazení sloupců nebo jen přejdu na další stránku a zpět, tak při odstranění záznamu datagrid po překreslení ponechá položku stále v seznamu…
Editoval Alsatian (8. 12. 2022 9:48)