jQuery DataTables ve formuláři

Nedávno jsem dostal za úkol zpřehlednit výpis fotogalerií, které je možné přidat k příspěvku. Automaticky jsem sáhl po jQuery pluginu DataTables. Normálně ho používám k výpisu všemožných tabulkových dat, stránkování, filtrování… velmi jednoduché a efektivní řešení. Namontoval jsem ho tedy na tento, již hotový, systém. Vše proběhlo bez problémů a během chvilky byl výpis fotogalerií krásně přehledný. Nechal jsem defaultně vypsat 10 fotogalerií. Měl jsem radost jak jednoduché to celé bylo.

Problém nastal, když jsem chtěl přidat více fotogalerií, např. dvě z první stany DataTables a jednu z druhé. Uložil jsem příspěvek a hle, připojena byla jen fotogalerie z druhé stránky. Když jsem se pustil do hledání problému, zjistil jsem, že DataTables fungují tak, že v HTML v DOMu zobrazují vždy jen aktuálně zobrazené záznamy. To znamená, že máme-li v tabulce 100 záznamů, vypisujeme-li je po 10ti, v samotném HTML bude vypsáno pouze 10 aktuálně zobrazených řádků. Moje domněnka, že je ostatní řádky jsou skryty např. pomocí CSS byly mylné, v HTML vůbec nejsou. Tudíž při odeslání formuláře se odeslali pouze ty řádky, které v HTML aktuálně byly.

Google konkrétní řešení neporadil, ale spojil jsem několik informací, které jsem našel. A co čert nechtěl, potřeboval jsem hned řešení dvě, protože jsem dostal úkol zpřehlednit tento výpis ještě na jednom místě.

Na prvním místě se formulář odesílal javascriptem (nevím proč, neřeším to) a fotogalerie se odesílala v jednom parametru, kde jednotlívé fotogalerie byly odděleny čárkou

Musel jsem tedy požít následující řešení – vytáhnout si z DataTables všechny řádky, převést je na jQuery kolekci a až z ní pomocí selektoru vytáhnout ty, které mají zaškrtnuté checkboxy.

Proměnnou galsel jsem poté přidal do $.post

Na druhém místě však nebyl formulář odesílán javascriptem, takže úpravu dat v POSTu jako v předchozím případě jsem použít nemohl. Takže jsem použil řešení následující.

Věřím, že existuje více řešení a hromada jich je určitě elegantnějších, ale tady byla v první řadě důležitá rychlost řešení, funkčnost a „montáž“ na již hotový systém. Vše jsem splnil a mohu říct, že jsem spokojen.

Tomáš Přibyl

Jsem IT specialista a konzultant, tvůrce webů a webových aplikací v PHP. V současné době pracuji jako OSVČ.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *