Ublaboo – group a nepřekreslující se datagrid
- Alsatian
- Člen | 177
Ahoj.
Mám datagrid jako samostatnou komponentu (DatagridOfferControl). Přidal jsem si do něj hromadné mazání:
Mazání potom vypadá nějak takto:
Datagrid vykresluji šablonou opět komponenty (DatagridOfferControl.latte):
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:
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)
- v_wagner
- Člen | 13
Mám prakticky stejný problém.
Řekl bych, že funkce pro hromadnou změnu se zavolá až po refreshi gridu, který se provede automaticky, pak se vyvolá samotná funkce na hromadnou změnu a i když je její součástí kód pro refresh, další se již nevyvolá.
Vypozoroval jsem, že když označím položky pro změnu komentáře, tento nastavím, dojde k odznačení chcekboxů pro multiselect, v databázi jsou nové hodnoty, ale ukazují se ty staré.
Pak udělám stejnou operaci, ale použiju jiný text a najednou se v gridu objeví ten předchozí z první hromadné změny a v databázi je uložen ten, co jsem zadával v této druhé změně.
Pak udělám stejnou operaci, ale použiju opět jiný text a najednou se v gridu objeví ten předchozí z druhé hromadné změny a v databázi je uložen ten, co jsem zadával v této třetí změně.
a tak dále.
Když se podívám do Laděnky na SQL dotazy, tak i tam je vidět, že nejdříve se zpracují dotazy pro sestavení gridu a teprve pak se ve funkci CommentMultiSet provede změna dat těch komentářů.
Něco je špatně a nemůžu přijít na to co.
- mskocik
- Člen | 74
v_wagner napsal(a):
Když se podívám do Laděnky na SQL dotazy, tak i tam je vidět, že nejdříve se zpracují dotazy pro sestavení gridu a teprve pak se ve funkci CommentMultiSet provede změna dat těch komentářů.
Něco je špatně a nemůžu přijít na to co.
@v_wagner Ako máš definovaný datasource toho gridu? Ak je tvoj datasource klasické pole, tak je načítané už vopred a pri prekreslení snippetov sa použuje toto existujúce pole, nezískava sa znovu z DB, ak si to v medzičase updatol.
Editoval mskocik (28. 2. 12:57)
- v_wagner
- Člen | 13
mskocik napsal(a):
v_wagner napsal(a):
Když se podívám do Laděnky na SQL dotazy, tak i tam je vidět, že nejdříve se zpracují dotazy pro sestavení gridu a teprve pak se ve funkci CommentMultiSet provede změna dat těch komentářů.
Něco je špatně a nemůžu přijít na to co.
@v_wagner Ako máš definovaný datasource toho gridu? Ak je tvoj datasource klasické pole, tak je načítané už vopred a pri prekreslení snippetov sa použuje toto existujúce pole, nezískava sa znovu z DB, ak si to v medzičase updatol.
Pravda, je to pole, sestavuje se ve funkci createComponentJizdy2Grid poměrně složitě hned na začátku z API externího zdroje a kombinuje s SQL daty databáze. Toto celé proběhne po potvrzení hromadné operace jako první včetně refreshe dat v gridu, pak se spustí funkce na samotnou hromadnou operaci, na jejímž konci je požadavek na refresh, který se ale ignoruje. Navíc (to jsem pravda neuvedl) jsou takto hromadně měněná pole součástí inline editace.
v podstatě to vypadá takto:
- v_wagner
- Člen | 13
Vida – to vypadá funkčně. Samozřejmě
Jinak to uvnitř funkce nezná $grid a nemůže provést
Teď už jen škoda, že se teď to celé volá 2x – jednou před hromadnou změnou a jednou po. Ale to je malá daň za to, že to funguje. Ono se to až tak často používat nebude. Každopádně díky, tohle mě nenapadlo zkoušet.
Editoval v_wagner (4. 3. 10:49)