Ublaboo – group a nepřekreslující se datagrid

Alsatian
Člen | 163
+
0
-

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)