Nový Nette DataGrid pro Bootstrap s možností vypsat strom
- bezsebesam
- Člen | 8
jazby napsal(a):
Do Gridu právě přibyla nová funkcionalita Custom translator
Volání
$grid->setTranslator($myTranslator);
Očekáván interface \Nette\Localization\ITranslator.
Přeloženy budou následně veškeré textové názvy sloupců, buttonů, title u statusů, akce u selection atp. Snad bude k prospěchu.
Změna je v „dev-master“.
Super, vypadá to dobře.
Můžu se ještě připomenout s těmi ostatními dotazy, které jsem měl? Bylo to ohledně načtení dat z jiné tabulky přes cizí klíč, šířky sloupců a filtrů.
- svobodai
- Člen | 136
bezsebesam napsal(a):
Můžu se ještě připomenout s těmi ostatními dotazy, které jsem měl? Bylo to ohledně načtení dat z jiné tabulky přes cizí klíč, šířky sloupců a filtrů.
Ohledně načtení dat z jiné tabulky je to jednoduché pokud používáš
NetteDatabase a pokud máš právně udělané tabulky viz database-selection.
Co se týče šířky sloupců tam to musíš řešit přes CSS.
- bezsebesam
- Člen | 8
svobodai napsal(a):
bezsebesam napsal(a):
Můžu se ještě připomenout s těmi ostatními dotazy, které jsem měl? Bylo to ohledně načtení dat z jiné tabulky přes cizí klíč, šířky sloupců a filtrů.
Ohledně načtení dat z jiné tabulky je to jednoduché pokud používáš NetteDatabase a pokud máš právně udělané tabulky viz database-selection.
Co se týče šířky sloupců tam to musíš řešit přes CSS.
Můžeš sem prosím hodit nějakou jednoduchou ukázku ohledně toho provázání tabulek? Díky.
- svobodai
- Člen | 136
bezsebesam napsal(a):
svobodai napsal(a):
bezsebesam napsal(a):
Můžu se ještě připomenout s těmi ostatními dotazy, které jsem měl? Bylo to ohledně načtení dat z jiné tabulky přes cizí klíč, šířky sloupců a filtrů.
Ohledně načtení dat z jiné tabulky je to jednoduché pokud používáš NetteDatabase a pokud máš právně udělané tabulky viz database-selection.
Co se týče šířky sloupců tam to musíš řešit přes CSS.Můžeš sem prosím hodit nějakou jednoduchou ukázku ohledně toho provázání tabulek? Díky.
Toto je kód v PHP
$selection = $this->database->table('PlayLists');
$selection->select(
'PlayCount, Pieces.IdPiece IdPiece, Pieces.Name PieceName, Pieces.ISRC , Pieces.OZ ,Pieces.Interprets.Name InterpretName, ' .
'Broadcasts.IdBroadcast IdBroadcast, Broadcasts.Name BroadcastName, ' .
'Broadcasts.Stations.IdStation IdStation, Broadcasts.Stations.Name StationName, ' .
'Broadcasts.Stations.Payers.IdPayer IdPayer, Broadcasts.Stations.Payers.Name PayerName');
a tomu odpovídající SQL
SELECT [PlayCount],[Pieces].[IdPiece]
[IdPiece], [Pieces].[Name] [PieceName], [Pieces].ISRC , [Pieces].OZ ,[Interprets].[Name]
[InterpretName], [Broadcasts].[IdBroadcast] [IdBroadcast], [Broadcasts].[Name] [BroadcastName],
[Stations].[IdStation] [IdStation], [Stations].[Name] [StationName], [Payers].[IdPayer] [IdPayer],
[Payers].[Name] [PayerName]
FROM [PlayLists]
LEFT JOIN [Pieces] ON [PlayLists].[Pieces_IdPiece] = [Pieces].[IdPiece]
LEFT JOIN [Interprets] ON [Pieces].[Interprets_IdInterpret] = [Interprets].[IdInterpret]
LEFT JOIN [Broadcasts] ON [PlayLists].[Broadcasts_IdBroadcast] = [Broadcasts].[IdBroadcast]
LEFT JOIN [Stations] ON [Broadcasts].[Stations_IdStation] = [Stations].[IdStation]
LEFT JOIN [Payers] ON [Stations].[Payers_IdPayer] = [Payers].[IdPayer]
- mesour
- Nette Blogger | 236
bezsebesam napsal(a):
Můžu se ještě připomenout s těmi ostatními dotazy, které jsem měl? Bylo to ohledně načtení dat z jiné tabulky přes cizí klíč, šířky sloupců a filtrů.
Co se Týce sirky sloupců kdyz mají stejný název, jen jsou v jiném gridu, můžu přidávat na grid classu podle nazvu componenty, pak by selector vypadal třeba: .userDataGrid .column-name. Tohle by melo stačit. Az budu dělat nejaky update tak to zapracuji.
- FJP
- Člen | 124
jazby napsal(a):
…EDIT
Zapoměl jsem dodat, že v 5.3 přiřazním $that = $this měníš viditelnost, takže pokud máš $this->termId jako private nebo protected, nepůjde přečíst.
Změnou je bud $that->termId nstavit jako public, nebo takto:Verze 2 pro 5.3
$that = $this; $termId = $this->termId; Column\Text::CALLBACK => function($row) use ($that, $termId) { return $that->registrationInfo($termId, $row['id'])->amountofregistered; }
Díky, jazby, to s viditelností pomohlo :)
- bezsebesam
- Člen | 8
svobodai napsal(a):
bezsebesam napsal(a):
svobodai napsal(a):
bezsebesam napsal(a):
Můžu se ještě připomenout s těmi ostatními dotazy, které jsem měl? Bylo to ohledně načtení dat z jiné tabulky přes cizí klíč, šířky sloupců a filtrů.
Ohledně načtení dat z jiné tabulky je to jednoduché pokud používáš NetteDatabase a pokud máš právně udělané tabulky viz database-selection.
Co se týče šířky sloupců tam to musíš řešit přes CSS.Můžeš sem prosím hodit nějakou jednoduchou ukázku ohledně toho provázání tabulek? Díky.
Toto je kód v PHP
$selection = $this->database->table('PlayLists'); $selection->select( 'PlayCount, Pieces.IdPiece IdPiece, Pieces.Name PieceName, Pieces.ISRC , Pieces.OZ ,Pieces.Interprets.Name InterpretName, ' . 'Broadcasts.IdBroadcast IdBroadcast, Broadcasts.Name BroadcastName, ' . 'Broadcasts.Stations.IdStation IdStation, Broadcasts.Stations.Name StationName, ' . 'Broadcasts.Stations.Payers.IdPayer IdPayer, Broadcasts.Stations.Payers.Name PayerName');
a tomu odpovídající SQL
SELECT [PlayCount],[Pieces].[IdPiece] [IdPiece], [Pieces].[Name] [PieceName], [Pieces].ISRC , [Pieces].OZ ,[Interprets].[Name] [InterpretName], [Broadcasts].[IdBroadcast] [IdBroadcast], [Broadcasts].[Name] [BroadcastName], [Stations].[IdStation] [IdStation], [Stations].[Name] [StationName], [Payers].[IdPayer] [IdPayer], [Payers].[Name] [PayerName] FROM [PlayLists] LEFT JOIN [Pieces] ON [PlayLists].[Pieces_IdPiece] = [Pieces].[IdPiece] LEFT JOIN [Interprets] ON [Pieces].[Interprets_IdInterpret] = [Interprets].[IdInterpret] LEFT JOIN [Broadcasts] ON [PlayLists].[Broadcasts_IdBroadcast] = [Broadcasts].[IdBroadcast] LEFT JOIN [Stations] ON [Broadcasts].[Stations_IdStation] = [Stations].[IdStation] LEFT JOIN [Payers] ON [Stations].[Payers_IdPayer] = [Payers].[IdPayer]
To by asi šlo. Díky.
Mě jen zajímalo, jestli neexistuje něco, jako je v Grido metoda setColumn(),
viz http://o5.github.io/…tion.cs.html#…
- svobodai
- Člen | 136
bezsebesam napsal(a):
To by asi šlo. Díky.
Mě jen zajímalo, jestli neexistuje něco, jako je v Grido metoda setColumn(), viz http://o5.github.io/…tion.cs.html#…
Ne není, jde to udělat jinak jen musíš napsat co konkrétně chceš.
Bylo by dobré kdyby autoři různých gridů se domluvili a udělali jeden,
protože jsou některé věci, které se mi líbi na tomto GRIDu, jiné zase na
GRIDO, a jiné zase na NEXTRAS, kdyby se to dalo dohromady byl by to špičkový
DataGrid.
- FJP
- Člen | 124
mesour napsal(a):
FJP napsal(a):
TIP:
Bylo by možné zrealizovat ordering i u sloupce, který načítá data přes callback? (viz. můj příspěvek výše)Tohle není možné, jelikož ordering se posílá do SQL za ORDER BY.
Ajo, to mi nedošlo.
Jinak, při použití selectBoxu v custom filter nezůstává odeslaná hodnota.
- mpis
- Člen | 65
svobodai napsal(a):
Bylo by dobré kdyby autoři různých gridů se domluvili a udělali jeden, protože jsou některé věci, které se mi líbi na tomto GRIDu, jiné zase na GRIDO, a jiné zase na NEXTRAS, kdyby se to dalo dohromady byl by to špičkový DataGrid.
A ještě nezapomenout na Nifty grid se subgridy v řádku, ale zase nemá
arraysource.
Tyto čtyři dát dohromady, to by byla bezkonkurenční lahůdka.
- mesour
- Nette Blogger | 236
FJP napsal(a):
mesour napsal(a):
FJP napsal(a):
TIP:
Bylo by možné zrealizovat ordering i u sloupce, který načítá data přes callback? (viz. můj příspěvek výše)Tohle není možné, jelikož ordering se posílá do SQL za ORDER BY.
Ajo, to mi nedošlo.
Jinak, při použití selectBoxu v custom filter nezůstává odeslaná hodnota.
Aha, tak to je bug. Jakmile se ke tomu dostanu, tak to fixnu. Díky za upozornění :)
- jazby
- Člen | 44
svobodai napsal(a):
Ne není, jde to udělat jinak jen musíš napsat co konkrétně chceš.
Bylo by dobré kdyby autoři různých gridů se domluvili a udělali jeden, protože jsou některé věci, které se mi líbi na tomto GRIDu, jiné zase na GRIDO, a jiné zase na NEXTRAS, kdyby se to dalo dohromady byl by to špičkový DataGrid.
Krásná myšlenka. Ale jednak spíše nereálná a hlavně by pak z toho byl trochu kladivo na komára. To spíše bude lepší, pokud si jasně definujeme co od toho Gridu kdo očekává a dle toho si řekneme co lze udělat a co už je zbytečné. Naším cílem je určitě udělat použitelný grid, který uspokojí drtivou většinu požadavků. Osobně ostatní gridy neznám ani jsem je nikdy nezkoušel, pouze jsem je proklikal na doplňcích a zběžně si je ohodnotil (bez stažení). Nevím tedy přesně jaké výhody má Grid X a jaké Y…
Pokud tedy má někdo nápad na nové funkce, či mu něco nevyhovuje, návrhy určitě pište, případně se zapojte rovnou do vývoje :).
mpis napsal(a):
A ještě nezapomenout na Nifty grid se subgridy v řádku, ale zase nemá arraysource.
Tyto čtyři dát dohromady, to by byla bezkonkurenční lahůdka.
Já pro své projekty využívám grid který jsme si napsali namíru pro
naše účely. Umí filtrovat, sortovat a mazat + umí ajaxové subgridy. Ale
není to ve stavu kdy by to jednoduše šlo udělat jako doplněk (navíc tho
umí málo), takže jeho otevření nemá smysl.
Každopádně „subridy“ jsou užitečná věc a jejich zavedení bych rád
prosadil i do MGrida.
Editoval jazby (4. 11. 2014 10:54)
- svobodai
- Člen | 136
jazby napsal(a):
Krásná myšlenka. Ale jednak spíše nereálná a hlavně by pak z toho byl trochu kladivo na komára. To spíše bude lepší, pokud si jasně definujeme co od toho Gridu kdo očekává a dle toho si řekneme co lze udělat a co už je zbytečné. Naším cílem je určitě udělat použitelný grid, který uspokojí drtivou většinu požadavků. Osobně ostatní gridy neznám ani jsem je nikdy nezkoušel, pouze jsem je proklikal na doplňcích a zběžně si je ohodnotil (bez stažení). Nevím tedy přesně jaké výhody má Grid X a jaké Y…
Pokud tedy má někdo nápad na nové funkce, či mu něco nevyhovuje, návrhy určitě pište, případně se zapojte rovnou do vývoje :).
mpis napsal(a):
A ještě nezapomenout na Nifty grid se subgridy v řádku, ale zase nemá arraysource.
Tyto čtyři dát dohromady, to by byla bezkonkurenční lahůdka.Já pro své projekty využívám grid který jsme si napsali namíru pro naše účely. Umí filtrovat, sortovat a mazat + umí ajaxové subgridy. Ale není to ve stavu kdy by to jednoduše šlo udělat jako doplněk (navíc tho umí málo), takže jeho otevření nemá smysl.
Každopádně „subridy“ jsou užitečná věc a jejich zavedení bych rád prosadil i do MGrida.
No já jsem v rámci dvou projektů vyzkoušel prakticky i jiné.
co bych chtěl za funkcionality
možnost prototypování hlaviček a sloupců jako je u GRIDO, tím si již
v prezenteru mohu přidat formáty jako šířka sloupce, zarovnání buňky
případně přidat CSS styl, stačilo by mi i jen přidání CSS class
načítání dat do GRIDu přes callback jako je u NEXTRAS, o tom už jsem psal. Není potom nutno řešit kdo co použije za zdroj dat, protože si to vyřeší v té callback funkci.
Zatím co jsem prakticky vyzkoušel tak mi tento grid vyhovuje nejlépe.
- vymak
- Člen | 92
Ahoj, díky za super grid ale potřeboval bych trochu poradit.
Mám tento grid v samostané komponentě, tedy ne přímo v presenteru. Můj problém je že netusím jak zavolat handle metodu přímo v komponentě.
$web = 'web';
$deactivateButton = new Button();
$deactivateButton->setType('btn-danger')
->setIcon('glyphicon-trash')
->setTitle('Smazat')
->addAttribute('href', new Link(array(
Link::HREF => 'deactivate!',
Link::PARAMS => array(
'id' => '{' . $tableId . '}'
)
)))
->addAttribute('data-confirm', 'modal')
->addAttribute('data-confirm-ok-text', 'Deaktivovat')
->addAttribute('data-confirm-title', 'Deaktivovat partnera?')
->addAttribute('data-confirm-text', 'Opravdu deaktivovat partnera <strong>{' . $web . '}</strong>? Deaktivací dojde k okamžitému zastavení zobrazování tohoto partnera na webových stránkách.');
Vygenerovaný odkaz z deactivate! odkazuje do presenteru, ale já potřebuji aby odkazoval do té mé komponenty, ve které je i tento Grid.
Dále bych se chtěl zeptat jestli nějak lze u posledního řádku zobrazit přímo nějakou proměnnou tak jak se to dělá třeba u Link::PARAMS?
- svobodai
- Člen | 136
Jakým způsobem mohu z gridu vytáhnout aktuálně použitý select, případně informace ke stránkování.
Ještě jsem narazil na to, když změním filtr a tím se mi změní počet stránek tak zůstává paginator nastaven na tu stránku kde jsem byl, i když už na ní nemusí být dat. Jde o to, že pokud změním řazení nebo filtr měl by se paginator nastavit na první stránku.
- mesour
- Nette Blogger | 236
tom napsal(a):
Bylo by prosím možné, aby v případě, že datasource nenabízí žádná data, tak vypsat nějaký uživatelský alert? Jestli jsem to někde přehlédl tak se omlouvám.
Díky
Jestli to správně chápu, tak jde o to, pokud nejsou žádné data tak udělat nějakou řádku s colspan=„počet sloupců“, ve které by byl napsaný nějaký text například „Žádná data!“. Text by samozřejmě šel nastavit, pokud by se nanastavil, tak by byl nějaký defaultní nebo by se řádek nezobrazil.
Tohle by stačilo?
- mesour
- Nette Blogger | 236
svobodai napsal(a):
Potřeboval bych do hlavičky některých sloupců přidat span s tooltipem. Jak by se to dalo udělat, nebo jak by se to dalo vyřešit jinak.
Dalo by se to vyřešit takhle:
Každý sloupec má metodu getHeaderContent, která vrací Nette\Utils\Html.
Teoreticky by se dal sloupec podědit, následně by se přepsala metoda
getHeaderContent, například takto:
public function getHeaderContent() {
$parent = parent::getHeaderContent();
$parent->add("my added content jako string nebo \Nette\Utils\Html");
return $parent;
}
Nevím a teď nemám čas zkoumat, co všechno umí Nette\Utils\Html, občas bývá obsah hlavičky složitější. Nicméně, takhle by se to teoreticky řešit dalo, když ne, tak by se na to mohlo něco vymyslet (asi by to bylo do budoucna lepší).
V každém případě to vypadá, že se teď minimálně týden-dva nedostanu k nějakým větším změnám, mám hodně jiné práce a také připravuji přednášku.
- tom
- Člen | 171
mesour napsal(a):
tom napsal(a):
Bylo by prosím možné, aby v případě, že datasource nenabízí žádná data, tak vypsat nějaký uživatelský alert? Jestli jsem to někde přehlédl tak se omlouvám.
Díky
Jestli to správně chápu, tak jde o to, pokud nejsou žádné data tak udělat nějakou řádku s colspan=„počet sloupců“, ve které by byl napsaný nějaký text například „Žádná data!“. Text by samozřejmě šel nastavit, pokud by se nanastavil, tak by byl nějaký defaultní nebo by se řádek nezobrazil.
Tohle by stačilo?
Nene, myslím to tak, že v případě kdy nejsou žádné data = řádky … třeba zvoleným podmínkám nevyhovuje nic (např. na dnešní den není žádná objednávka). Tak aby se v tom gridu zobrazil nějaký uživatelsky definovaný alert. Nyní je tam záhlaví a pak stránkovač. Mezitím není nic.
Tom
- mesour
- Nette Blogger | 236
svobodai napsal(a):
Jakým způsobem mohu z gridu vytáhnout aktuálně použitý select, případně informace ke stránkování.
Ještě jsem narazil na to, když změním filtr a tím se mi změní počet stránek tak zůstává paginator nastaven na tu stránku kde jsem byl, i když už na ní nemusí být dat. Jde o to, že pokud změním řazení nebo filtr měl by se paginator nastavit na první stránku.
Zatím vytáhnout nelze, přidám.
Tohle je bug, zapsal jsem si to na seznam a při dalším update to opravím.
- mesour
- Nette Blogger | 236
tom napsal(a):
mesour napsal(a):
tom napsal(a):
Bylo by prosím možné, aby v případě, že datasource nenabízí žádná data, tak vypsat nějaký uživatelský alert? Jestli jsem to někde přehlédl tak se omlouvám.
Díky
Jestli to správně chápu, tak jde o to, pokud nejsou žádné data tak udělat nějakou řádku s colspan=„počet sloupců“, ve které by byl napsaný nějaký text například „Žádná data!“. Text by samozřejmě šel nastavit, pokud by se nanastavil, tak by byl nějaký defaultní nebo by se řádek nezobrazil.
Tohle by stačilo?
Nene, myslím to tak, že v případě kdy nejsou žádné data = řádky … třeba zvoleným podmínkám nevyhovuje nic (např. na dnešní den není žádná objednávka). Tak aby se v tom gridu zobrazil nějaký uživatelsky definovaný alert. Nyní je tam záhlaví a pak stránkovač. Mezitím není nic.
Tom
Aha jasně chápu, to znamená, že to co jsem psal by tam také mohlo být + druhá hláška, když původní data budou, ale nebude nic po filtrování.
To by mělo být OK ne? :)
- mesour
- Nette Blogger | 236
vymak napsal(a):
Ahoj, díky za super grid ale potřeboval bych trochu poradit.
Mám tento grid v samostané komponentě, tedy ne přímo v presenteru. Můj problém je že netusím jak zavolat handle metodu přímo v komponentě.
Vygenerovaný odkaz z deactivate! odkazuje do presenteru, ale já potřebuji aby odkazoval do té mé komponenty, ve které je i tento Grid.
Dále bych se chtěl zeptat jestli nějak lze u posledního řádku zobrazit přímo nějakou proměnnou tak jak se to dělá třeba u Link::PARAMS?
- Tuhle možnost jsem neřešil, udělám něco čím to půjde nastavit
- Tohle taky neumí. Nějaké nastavení by určitě ale šlo udělat :-)
- vymak
- Člen | 92
mesour napsal(a):
vymak napsal(a):
Ahoj, díky za super grid ale potřeboval bych trochu poradit.
Mám tento grid v samostané komponentě, tedy ne přímo v presenteru. Můj problém je že netusím jak zavolat handle metodu přímo v komponentě.
Vygenerovaný odkaz z deactivate! odkazuje do presenteru, ale já potřebuji aby odkazoval do té mé komponenty, ve které je i tento Grid.
Dále bych se chtěl zeptat jestli nějak lze u posledního řádku zobrazit přímo nějakou proměnnou tak jak se to dělá třeba u Link::PARAMS?
- Tuhle možnost jsem neřešil, udělám něco čím to půjde nastavit
- Tohle taky neumí. Nějaké nastavení by určitě ale šlo udělat :-)
Díky za info, a nenepadá Tě zatím jak ten první bod zprovoznit? Klidně i nějakým hackem :D Nefunguje mi teď totiž půlka administrace :D
Mě napadlo jen takové řešení, ale tam zase narážím s problémem číslo 2 a to že nevím jak tam dostat to $id
$button = new Components\Button;
$button->addAttribute('href', $this->link('deactivate!', $id));
Editoval vymak (6. 11. 2014 17:24)
- mesour
- Nette Blogger | 236
vymak napsal(a):
mesour napsal(a):
vymak napsal(a):
Ahoj, díky za super grid ale potřeboval bych trochu poradit.
Mám tento grid v samostané komponentě, tedy ne přímo v presenteru. Můj problém je že netusím jak zavolat handle metodu přímo v komponentě.
Vygenerovaný odkaz z deactivate! odkazuje do presenteru, ale já potřebuji aby odkazoval do té mé komponenty, ve které je i tento Grid.
Dále bych se chtěl zeptat jestli nějak lze u posledního řádku zobrazit přímo nějakou proměnnou tak jak se to dělá třeba u Link::PARAMS?
- Tuhle možnost jsem neřešil, udělám něco čím to půjde nastavit
- Tohle taky neumí. Nějaké nastavení by určitě ale šlo udělat :-)
Díky za info, a nenepadá Tě zatím jak ten první bod zprovoznit? Klidně i nějakým hackem :D Nefunguje mi teď totiž půlka administrace :D
Mě napadlo jen takové řešení, ale tam zase narážím s problémem číslo 2 a to že nevím jak tam dostat to $id
$button = new Components\Button; $button->addAttribute('href', $this->link('deactivate!', $id));
Zítra to zapracuji a dám vědět, až to bude. Napadá mě dost řešení, ale jsou to změny na více místech.
Jedno řešení mě napadá, ale to nezahrnuje subcomponenty, takže se nad tím zítra zamyslím a něco připravím.
- svobodai
- Člen | 136
mesour napsal(a):
svobodai napsal(a):
Potřeboval bych do hlavičky některých sloupců přidat span s tooltipem. Jak by se to dalo udělat, nebo jak by se to dalo vyřešit jinak.
Dalo by se to vyřešit takhle:
Každý sloupec má metodu getHeaderContent, která vrací Nette\Utils\Html. Teoreticky by se dal sloupec podědit, následně by se přepsala metoda getHeaderContent, například takto:public function getHeaderContent() { $parent = parent::getHeaderContent(); $parent->add("my added content jako string nebo \Nette\Utils\Html"); return $parent; }
Nevím a teď nemám čas zkoumat, co všechno umí Nette\Utils\Html, občas bývá obsah hlavičky složitější. Nicméně, takhle by se to teoreticky řešit dalo, když ne, tak by se na to mohlo něco vymyslet (asi by to bylo do budoucna lepší).
V každém případě to vypadá, že se teď minimálně týden-dva nedostanu k nějakým větším změnám, mám hodně jiné práce a také připravuji přednášku.
To je hezké, ale problém je v tom, že tu úpravu nepotřebuji na všechny sloupce, ale jen na některé. Defacto, ta úprava by se měla být jako další parametr u sloupce a je jedno jestli se to bude předávat jako text nebo HTML elelment.
- svobodai
- Člen | 136
Mám problém s externím filtrem, když v něm provedu změny, které mají provést změny v dalších polích v tomto filtru nedojde k jeho překreslení. mám tam $this->redrawControl();
Chtěl bych jen překreslit filtr, ale dojde k překreslení i gridu, což je pro mně problém, protože načtení samotného gridu je dlouhá záležitost.
Jde nějak vynutit jen překreslení filtrovacího formuláře.
- mesour
- Nette Blogger | 236
svobodai napsal(a):
Mám problém s externím filtrem, když v něm provedu změny, které mají provést změny v dalších polích v tomto filtru nedojde k jeho překreslení. mám tam $this->redrawControl();
Chtěl bych jen překreslit filtr, ale dojde k překreslení i gridu, což je pro mně problém, protože načtení samotného gridu je dlouhá záležitost.
Jde nějak vynutit jen překreslení filtrovacího formuláře.
Ahoj, je tam event onFilter, v tomhle callbacku máš asi $this->redrawControl(). Mělo by fungovat $this[‚gridComponentName‘][‚filter‘]->redrawControl(‚filter‘). Nemám to ale otestované.
- mesour
- Nette Blogger | 236
svobodai napsal(a):
mesour napsal(a):
svobodai napsal(a):
Potřeboval bych do hlavičky některých sloupců přidat span s tooltipem. Jak by se to dalo udělat, nebo jak by se to dalo vyřešit jinak.
Dalo by se to vyřešit takhle:
Každý sloupec má metodu getHeaderContent, která vrací Nette\Utils\Html. Teoreticky by se dal sloupec podědit, následně by se přepsala metoda getHeaderContent, například takto:public function getHeaderContent() { $parent = parent::getHeaderContent(); $parent->add("my added content jako string nebo \Nette\Utils\Html"); return $parent; }
Nevím a teď nemám čas zkoumat, co všechno umí Nette\Utils\Html, občas bývá obsah hlavičky složitější. Nicméně, takhle by se to teoreticky řešit dalo, když ne, tak by se na to mohlo něco vymyslet (asi by to bylo do budoucna lepší).
V každém případě to vypadá, že se teď minimálně týden-dva nedostanu k nějakým větším změnám, mám hodně jiné práce a také připravuji přednášku.
To je hezké, ale problém je v tom, že tu úpravu nepotřebuji na všechny sloupce, ale jen na některé. Defacto, ta úprava by se měla být jako další parametr u sloupce a je jedno jestli se to bude předávat jako text nebo HTML elelment.
Dobře, nějak to tam zapracuji, ale kdy se k tomu dostanu to teď nemůžu slíbit.
- mesour
- Nette Blogger | 236
mesour napsal(a):
vymak napsal(a):
mesour napsal(a):
vymak napsal(a):
Ahoj, díky za super grid ale potřeboval bych trochu poradit.
Mám tento grid v samostané komponentě, tedy ne přímo v presenteru. Můj problém je že netusím jak zavolat handle metodu přímo v komponentě.
Vygenerovaný odkaz z deactivate! odkazuje do presenteru, ale já potřebuji aby odkazoval do té mé komponenty, ve které je i tento Grid.
Dále bych se chtěl zeptat jestli nějak lze u posledního řádku zobrazit přímo nějakou proměnnou tak jak se to dělá třeba u Link::PARAMS?
- Tuhle možnost jsem neřešil, udělám něco čím to půjde nastavit
- Tohle taky neumí. Nějaké nastavení by určitě ale šlo udělat :-)
Díky za info, a nenepadá Tě zatím jak ten první bod zprovoznit? Klidně i nějakým hackem :D Nefunguje mi teď totiž půlka administrace :D
Mě napadlo jen takové řešení, ale tam zase narážím s problémem číslo 2 a to že nevím jak tam dostat to $id
$button = new Components\Button; $button->addAttribute('href', $this->link('deactivate!', $id));
Zítra to zapracuji a dám vědět, až to bude. Napadá mě dost řešení, ale jsou to změny na více místech.
Jedno řešení mě napadá, ale to nezahrnuje subcomponenty, takže se nad tím zítra zamyslím a něco připravím.
Ahoj, omlouvám se za zpoždění, mám toho opravdu hodně. Zapracoval jsem zatím tu možnost odkazovat na componentu. Classa Components\Link má nyní constantu COMPONENT, které se dá poslat string nebo array.
V případě hodnoty:
„test“ volá metodu link na
$this->presenter[‚test‘]
array(„test“, „subtest“) volá metodu link na
$this->presenter[‚test‘][‚subtest‘]
To je u buttonu. U dropdownu, který má metodu addLink přibyl pátý parametr, který je default NULL a také se mu dá poslat string nebo array.
Změny jsou v dev-master.
Do další verze se nad tímhle ještě zamyslím a třeba se to ještě zjednoduší ;-)
- vymak
- Člen | 92
mesour napsal(a):
mesour napsal(a):
vymak napsal(a):
mesour napsal(a):
vymak napsal(a):
Ahoj, díky za super grid ale potřeboval bych trochu poradit.
Mám tento grid v samostané komponentě, tedy ne přímo v presenteru. Můj problém je že netusím jak zavolat handle metodu přímo v komponentě.
Vygenerovaný odkaz z deactivate! odkazuje do presenteru, ale já potřebuji aby odkazoval do té mé komponenty, ve které je i tento Grid.
Dále bych se chtěl zeptat jestli nějak lze u posledního řádku zobrazit přímo nějakou proměnnou tak jak se to dělá třeba u Link::PARAMS?
- Tuhle možnost jsem neřešil, udělám něco čím to půjde nastavit
- Tohle taky neumí. Nějaké nastavení by určitě ale šlo udělat :-)
Díky za info, a nenepadá Tě zatím jak ten první bod zprovoznit? Klidně i nějakým hackem :D Nefunguje mi teď totiž půlka administrace :D
Mě napadlo jen takové řešení, ale tam zase narážím s problémem číslo 2 a to že nevím jak tam dostat to $id
$button = new Components\Button; $button->addAttribute('href', $this->link('deactivate!', $id));
Zítra to zapracuji a dám vědět, až to bude. Napadá mě dost řešení, ale jsou to změny na více místech.
Jedno řešení mě napadá, ale to nezahrnuje subcomponenty, takže se nad tím zítra zamyslím a něco připravím.
Ahoj, omlouvám se za zpoždění, mám toho opravdu hodně. Zapracoval jsem zatím tu možnost odkazovat na componentu. Classa Components\Link má nyní constantu COMPONENT, které se dá poslat string nebo array.
V případě hodnoty:
„test“ volá metodu link na $this->presenter[‚test‘]
array(„test“, „subtest“) volá metodu link na $this->presenter[‚test‘][‚subtest‘]To je u buttonu. U dropdownu, který má metodu addLink přibyl pátý parametr, který je default NULL a také se mu dá poslat string nebo array.
Změny jsou v dev-master.
Do další verze se nad tímhle ještě zamyslím a třeba se to ještě zjednoduší ;-)
Díky moc :) Zkoušel jsem a funguje suprově :)
- mesour
- Nette Blogger | 236
Zítra bych se měl dostat ke gridu, takže zapracuji vaše požadavky, alespoň některé + fixnu některé bugy o kterých vím. Ale nic neslibuji, možná to zítra nestihnu.
Info: Pokud potřebujete nějakou úpravu nebo novou funkcionalitu urgentně, tak je možné poslat na GitHubu pull request, já se na to mrknu, případně poupravím, když bude potřeba a mergnu ;-) V každém případě doporučuji to nejdříve probrat tady než se do něčeho pustíte.
Jinak už mám skoro dokončenou verzi 2.0. Ještě budu testovat a doufám, že půjde co nejdřív do světa ;-) Nebude zpětně kompatibilní, budou odstraněny deprecated ze současné verze, celé se to zanoří do namespace \Mesour\DataGrid, pár dalších novinek a hlavně se změní inicializace sloupců. Konzultoval jsem to s Jazby a nakonec jsem se rozhodl pro způsob, kterým to řeší Nette formy, takže příklad sloupce text:
$grid->addText('name')
->setHeader('Name');
Také jsem přejmenoval setName na setHeader na všech sloupcích. setName toho moc neříkalo.
Ze současné verze v dev-master udělám 1.4.5. Ta už se nebude dál vyvíjet, jen se na ní budou fixovat bugy, když se najdou a případně se dodělá nějaká menší funkcionalita, pokud bude někdo potřebovat.
Až bude hotová verze 2.0, tak na grid.mesour.com bude dokumentace k verzi 2.0 a ta současná se přesune na jinou subdoménu. Nemám v plánu nějak měnit vzhled dokumentace, ani styl, jakým je psaná, to si myslím, že je vyhovující. Co tam ale bude nové bude lepší syntax highlight a u ukázek budou čísla řádků s možností sdílet odkaz na konkrétní řádek nebo skupinu řádků, tak jak to funguje třeba na GitHubu.
Trochu odjinud
Udělal jQuery plugin na zobrazení řádků k elementu <pre>, protože
ty co jsem našel mi prostě nevyhovovaly ať už použitím, možnostmi nebo
jiným. Tady je odkaz na ten plugin, kdyby se to někomu hodilo: https://github.com/…iceCodeLines.
Případné dotazy k pluginu do mailu přes formulář na mesour.com nebo
rovnou issues na GitHubu ;-)
Editoval mesour (22. 11. 2014 19:10)
- tom
- Člen | 171
mesour napsal(a):
tom napsal(a):
Můžu poprosit o ukázku kódu použití Permissions pro Button? Díky
Ahoj, normálně jako pro všechno ostatní, stačí nastavit callback, který bude vracet FALSE nebo Nette URL, která přijde v parametru. Vnitřní logiku si samozřejmě změň: http://grid.mesour.com/setting/#…
a jak ten callback na buttonu nastavis? diky
- mesour
- Nette Blogger | 236
tom napsal(a):
mesour napsal(a):
tom napsal(a):
Můžu poprosit o ukázku kódu použití Permissions pro Button? Díky
Ahoj, normálně jako pro všechno ostatní, stačí nastavit callback, který bude vracet FALSE nebo Nette URL, která přijde v parametru. Vnitřní logiku si samozřejmě změň: http://grid.mesour.com/setting/#…
a jak ten callback na buttonu nastavis? diky
Dejme tomu, že máš:
$button = new Button($this, array(
Button::TYPE => 'btn-danger',
Button::ICON => 'glyphicon-trash',
Button::CONFIRM => 'Realy want to delete user?',
Button::TITLE => 'Delete',
Button::ATTRIBUTES => array(
'href' => new Link(array(
Link::HREF => 'deleteUser!',
Link::PARAMS => array(
'id' => 'user_id'
)
))
),
));
Tak by jsi nastavil callback:
Link::$checkPermissionCallback = function($link) {
$allowed_pages_for_current_user = array(
'deleteUser!', 'DataGrid:editUser'
);
if(!in_array($link)) {
return FALSE;
}
return $link;
};
Samozřejmě půjde i třeba v presenteru, dejme tomu ve startupu:
Link::$checkPermissionCallback = array($this, 'checkPermission');
Pak by vnitřek metody checkPermission mohl vypadat následovně:
public function checkPermission(){
$allowed_pages_for_current_user = $this->user_model->getPermissions($this->user->id);
if(!in_array($link)) {
return FALSE;
}
return $link;
}
Nenastavuješ to zvlášť pro button. Nastavíš to globálně a ono se to použije pro všechny buttony a dropdowny v gridu i mimo grid.
Editoval mesour (4. 12. 2014 13:37)
- svobodai
- Člen | 136
Mám v gridu 8 sloupců, ale potřebuju filtrovat jen podle 4. Dá se nějak pro ten standardní filtr podle nastavit kterých se má filtrovat.
Dá se ve sloupci nastavit aby mi zobralzoval jiná data. Myslím tím, že v selectu mám id na jinou tabulku a abych ji nemusel přijoinovat v selectu, tak jestli se do sloupce dá nastavit zobrazení s tím, že tam bude dotaz do DB na dohledání popisku podle toho id?
- mesour
- Nette Blogger | 236
svobodai napsal(a):
Mám v gridu 8 sloupců, ale potřebuju filtrovat jen podle 4. Dá se nějak pro ten standardní filtr podle nastavit kterých se má filtrovat.
Dá se ve sloupci nastavit aby mi zobralzoval jiná data. Myslím tím, že v selectu mám id na jinou tabulku a abych ji nemusel přijoinovat v selectu, tak jestli se do sloupce dá nastavit zobrazení s tím, že tam bude dotaz do DB na dohledání popisku podle toho id?
Ahoj,
na sloupcích, na kterých nechceš filtrovat zavolej ->setOrdering(FALSE) nebo Column\Foo::ORDREING ⇒ FALSE.
Nic automatického tam není, bude asi potřeba použít callback a v něm si doplňující data z DB dotáhnout a vypsat sám.
- svobodai
- Člen | 136
mesour napsal(a):
svobodai napsal(a):
Mám v gridu 8 sloupců, ale potřebuju filtrovat jen podle 4. Dá se nějak pro ten standardní filtr podle nastavit kterých se má filtrovat.
Dá se ve sloupci nastavit aby mi zobralzoval jiná data. Myslím tím, že v selectu mám id na jinou tabulku a abych ji nemusel přijoinovat v selectu, tak jestli se do sloupce dá nastavit zobrazení s tím, že tam bude dotaz do DB na dohledání popisku podle toho id?
Ahoj,
na sloupcích, na kterých nechceš filtrovat zavolej ->setOrdering(FALSE) nebo Column\Foo::ORDREING ⇒ FALSE.
Nic automatického tam není, bude asi potřeba použít callback a v něm si doplňující data z DB dotáhnout a vypsat sám.
No to je hezké, pak tam ten filtr nemám, ale zase podle toho sloupce nemohu řadit :-(
- mesour
- Nette Blogger | 236
svobodai napsal(a):
mesour napsal(a):
svobodai napsal(a):
Mám v gridu 8 sloupců, ale potřebuju filtrovat jen podle 4. Dá se nějak pro ten standardní filtr podle nastavit kterých se má filtrovat.
Dá se ve sloupci nastavit aby mi zobralzoval jiná data. Myslím tím, že v selectu mám id na jinou tabulku a abych ji nemusel přijoinovat v selectu, tak jestli se do sloupce dá nastavit zobrazení s tím, že tam bude dotaz do DB na dohledání popisku podle toho id?
Ahoj,
na sloupcích, na kterých nechceš filtrovat zavolej ->setOrdering(FALSE) nebo Column\Foo::ORDREING ⇒ FALSE.
Nic automatického tam není, bude asi potřeba použít callback a v něm si doplňující data z DB dotáhnout a vypsat sám.
No to je hezké, pak tam ten filtr nemám, ale zase podle toho sloupce nemohu řadit :-(
Aha, tak to je bug teď si uvědomuji, že setOrdering(FALSE) má jen vypnout řazení a ne filtr. Takže tohle opravím a přidám metodu setFiltering(), která bude na všech sloupcích, podle kterých je možné filtrovat.
- mesour
- Nette Blogger | 236
mesour napsal(a):
svobodai napsal(a):
mesour napsal(a):
svobodai napsal(a):
Mám v gridu 8 sloupců, ale potřebuju filtrovat jen podle 4. Dá se nějak pro ten standardní filtr podle nastavit kterých se má filtrovat.
Dá se ve sloupci nastavit aby mi zobralzoval jiná data. Myslím tím, že v selectu mám id na jinou tabulku a abych ji nemusel přijoinovat v selectu, tak jestli se do sloupce dá nastavit zobrazení s tím, že tam bude dotaz do DB na dohledání popisku podle toho id?
Ahoj,
na sloupcích, na kterých nechceš filtrovat zavolej ->setOrdering(FALSE) nebo Column\Foo::ORDREING ⇒ FALSE.
Nic automatického tam není, bude asi potřeba použít callback a v něm si doplňující data z DB dotáhnout a vypsat sám.
No to je hezké, pak tam ten filtr nemám, ale zase podle toho sloupce nemohu řadit :-(
Aha, tak to je bug teď si uvědomuji, že setOrdering(FALSE) má jen vypnout řazení a ne filtr. Takže tohle opravím a přidám metodu setFiltering(), která bude na všech sloupcích, podle kterých je možné filtrovat.
Ahoj, nakonec jsem zjistil, že nešlo o bug. SetOrdering vypne správně pouze řazení :)
- mesour
- Nette Blogger | 236
Udělal jsem update, šlo pouze o fix některých bugů. Ještě mám nějaké na seznamu a pak tam mám i pár nových feature, o které jste si zde psali. Mám v plánu to vše zapracovat, až to bude, tak z dev-master vytvořím verzi 1.4.5, která se už nebude dále vyvíjet (pouze úpravy případných bugů). A pak do dev-master umístím verzi 2.0+ ;-)
Co bylo opraveno:
- Na sloupce, podle kterých lze filtrovat přidat metodu setFiltering, aby šlo filtr případně vypnout
- Fix default filter if value is NULL (JS error)
- Při použití filtru nebo řazení nastavit pager na první stránku
Změny jsou v dev-master
Editoval mesour (12. 12. 2014 22:23)
- mesour
- Nette Blogger | 236
Udělal jsem další update:
- Z required byla odstraněna nutnost mít v JS namapovaný click event na .ajax:not(form)
- Přibyly metody setAttributes a addAttribute na všech sloupcích. Je tak možné nastavit atributy pro <td>. Funguje tam také překlad hodnot např: „{user_id}“
- Pokud nejsou žádné data, tak se zobrazí hláška „Nothing to display.“. Hlášku je možné změnit pomocí $grid->setEmptyText(‚Your message‘); Překládá se pomocí uživatelského translatoru.
- Byl fixnut bug selectu v custom filtru. Nyní zobrazuje hodnotu po filtrování správně.
- Bylo trochu pozměněno UI u defaultních filtrů. Filtruje se rovnou při kliku na checkbox a není potřeba zvlášť klikat na „Apply filter“.
Změny jsou v „dev-master“.
- mesour
- Nette Blogger | 236
@svobodai : Přidal jsem nové metody Grid->getPaginator() a Grid->getCurrentDataSource(). Obě tyto metody v sobě volají before render. Takže je ideální je volat až po úplné inicializaci gridu.
- getPaginator vrací \Nette\Utils\Paginator s aktuálním nastavením nebo NULL, pokud není povolený pager
- getCurrentDataSource vrací aktuální DataSource, které mají nové metody: getTableSelection, getDibiDataSource.
Editoval mesour (14. 12. 2014 22:02)
- mesour
- Nette Blogger | 236
Právě mi do mailu přišel zajímavý dotaz. Rozhodl jsem se to napsat sem, kdyby měl někdo ostatní stejný problém, tak aby to bylo dohledatelné.
Otázka:
Jak správně v Mesour Nette DataGrid řešit následující scénář:
Mám tabulku s data.
V ní jsou např. ve dvou sloupcích propoje do dalších tabulek skrze ID.
Tab1: 1,Octavia, 10, 2
Tab2: 10, Škoda
Tab3: 2, nafta
Grid použiji pro Tab1 tak aby mi zobrazil 1,Octavia,Škoda,nafta
Nyní bych potřeboval použít super věc a to inline editaci.
Prosím existuje někde demo takovéto situace?
Nevím jak správně pro toto připravit data, ap.
Tak abych v té Tab1 editovat id a né přímo texty.
Odpověď:
jestli to správně chápu, tak potřebuješ třeba pro auto Octavia s ID
1 změnit typ paliva, tím pádem by asi bylo nejideálnější tam mít select
se všemi typy paliv a po výběru jiného paliva by se to v DB
změnilo že?
Tohle jsem už řešil a ne jen s 1:1 relací, ale dokonce s 1:n relací. Bohužel gridu zatím nelze nastavit relační tabulky (přemýšlel jsem nad tím, ale ještě jsem se nedostal k realizaci). Přemýšlel jsem zatím jen nad zobrazením, ale umožnit pro to editaci je zajímavý nápad :-)
Realizace:
Dejme tomu, že grid bude zobrazen v nějakém presenteru v akci default:
V actionDefault jsem si vytvořil subcomponenty s názvy ‚fuelX‘, kde „X“ bylo vždy ID řádku. V tvém případě ID auta. Source jsem si uložil do $this->source, abych měl pouze jednu instanci.
public function actionDefault() {
$this->source = new DibiDataSource($this->model->car->getAllCarsSource());
foreach ($this->source->fetchAll() as $car) {
$this->addComponent(new FuelControl($car), 'fuel' . $car['car_id']);
}
}
Componenta FuelControl už může mít vnitřek jakýkoliv. Do constructoru jí přijdou informace o autě, takže podle toho se pak chová (předvybere palivo pro toto auto, může mít v sobě handlery a formuláře, může mít vlastní templatu a metodu render, jako jakákoliv jiná componenta).
Pro relaci 1:n by componenta mohla zobrazovat v buňce <ul> s prvky a každé <li> může mít button třeba pro smazání nebo změnu statusu. A select pro přidávání nových položek. Select by pak kontroloval, zda už jsou přidány všechny položky, pokud by byly, tak by zobrazil info, že žádná další už přidat nelze. Také by kontroloval, co už bylo přidáno a ty hodnoty by se pak ve selectu nezobrazily, aby nevznikaly duplicity, pokud to není žádané.
Do gridu jsem pak přidal sloupec Column\Text a tomu jsem přes callback nastavil tuhle componentu vždy s příslušným ID řádku.
$grid = new Grid($this->source, $this, $name);
$grid->column(new Column\Text(array(
Column\Text::ID => 'car_id',
Column\Text::TEXT => 'Fuel type',
Column\Text::CALLBACK => function ($data, $that) {
return $that['fuel' . $data['car_id']->render();
},
Column\Text::CALLBACK_ARGS => array($this),
Column\Text::ORDERING => FALSE
)));
EDIT:
Pro info odeslání formuláře AJAXem po onChange na selectu se dá řešit
například takto:
$select->addSelect('fuel_id', NULL)
->setPrompt('Select fuel')
->setItems($not_used_fuels)
->getControlPrototype()->onchange("$(this).closest('form').ajaxFormSubmit(); return false;");
jQuery plugin ajaxFormSubmit je od Hozny Marka. Jen jsem ho přejmenoval a ještě jsem ho trochu pozměnil, link je zde: http://git.mesour.com/….ajaxform.js. Je ale z roku 2009, nevím zda ho od té doby neupdatoval :-)
Editoval mesour (9. 1. 2015 11:36)
- tom
- Člen | 171
Ahoj,
snažím se zprovoznit Row selection (viz http://grid.mesour.com/…c/selection/). Zajímalo by mě,
jak potom v příslušném handleru poznám, které ty sloupce byly
vybrány?
Funguje to někomu?
Navíc mi generuje adresy typu /a?do=activeSelected … písmeno „a“ je první písmeno handleru … je to OK?
Poprosil bych o ukázku jak to má fungovat.
Díky
Editoval tom (14. 1. 2015 9:07)
- tom
- Člen | 171
Když se dívám do ukázky na webu, tak tam jsou URL v odkazu v pořádku, např. /?do=activeSelected. Není mi jasné proč se mi tam dostává to první písmenko.
tom napsal(a):
Ahoj,
snažím se zprovoznit Row selection (viz http://grid.mesour.com/…c/selection/). Zajímalo by mě, jak potom v příslušném handleru poznám, které ty sloupce byly vybrány?Funguje to někomu?
Navíc mi generuje adresy typu /a?do=activeSelected … písmeno „a“ je první písmeno handleru … je to OK?
Poprosil bych o ukázku jak to má fungovat.
Díky
- mesour
- Nette Blogger | 236
tom napsal(a):
Když se dívám do ukázky na webu, tak tam jsou URL v odkazu v pořádku, např. /?do=activeSelected. Není mi jasné proč se mi tam dostává to první písmenko.
tom napsal(a):
Ahoj,
snažím se zprovoznit Row selection (viz http://grid.mesour.com/…c/selection/). Zajímalo by mě, jak potom v příslušném handleru poznám, které ty sloupce byly vybrány?Funguje to někomu?
Navíc mi generuje adresy typu /a?do=activeSelected … písmeno „a“ je první písmeno handleru … je to OK?
Poprosil bych o ukázku jak to má fungovat.
Díky
Ahoj, to je hodně divné, to písmeno „a“ by tam být nemělo a vůbec netuším, proč by se tam mělo objevovat. Jak vidíš na demu, tak tam žádné písmeno není. Je tam použitá poslední verze z dev-master.
Vybrané řádky získáš z $this->getHttpRequest()->getPost(‚data‘); Do budoucna budu tohle chtít změnit, aby se nastavovaly pouze callbacky, do kterých budou chodit v parametrech data aby to bylo jasnější.
- tom
- Člen | 171
tak pokud to prepisu na
<?php
//here set row selection
$grid->enableRowSelection($table_id, array(
'Active' => array( // simple way
'href' => 'activeSelected!'
),
'Unactive' => array( // simple way
'href' => 'unactiveSelected!'
),
'Delete' => array( // choice with javascript confirm
'href' => 'deleteSelected!',
'data-confirm' => 'Realy delete all selected users?'
),
));
?>
tak to funguje.
Muzu se zeptat, kdy se asi dostanes k tem callbackum, jestli s tim mym resenim mam pockat anebo to udelat zatim takto. Diky
mesour napsal(a):
tom napsal(a):
Když se dívám do ukázky na webu, tak tam jsou URL v odkazu v pořádku, např. /?do=activeSelected. Není mi jasné proč se mi tam dostává to první písmenko.
tom napsal(a):
Ahoj,
snažím se zprovoznit Row selection (viz http://grid.mesour.com/…c/selection/). Zajímalo by mě, jak potom v příslušném handleru poznám, které ty sloupce byly vybrány?Funguje to někomu?
Navíc mi generuje adresy typu /a?do=activeSelected … písmeno „a“ je první písmeno handleru … je to OK?
Poprosil bych o ukázku jak to má fungovat.
Díky
Ahoj, to je hodně divné, to písmeno „a“ by tam být nemělo a vůbec netuším, proč by se tam mělo objevovat. Jak vidíš na demu, tak tam žádné písmeno není. Je tam použitá poslední verze z dev-master.
Vybrané řádky získáš z $this->getHttpRequest()->getPost(‚data‘); Do budoucna budu tohle chtít změnit, aby se nastavovaly pouze callbacky, do kterých budou chodit v parametrech data aby to bylo jasnější.
- tom
- Člen | 171
Jestli to chápu správně, tak výsledkem každého handleru navázaného na Row selection je ajaxový request.
Potřebuju pomocí handleru stáhnout soubor, je možné nastavit aby se nejednalo o ajaxový request ale klasický? Pokud ne, tak kde se dá modifikovat ajax (a jak) tady toho gridu aby pro tento případ vykonal ještě otevření stránky, která to stažení souboru udělá?
Díky moc