Grido – DataGrid pro Nette
- mpis
- Člen | 65
Díky za tento výborný grid.
Nicméně mám dotaz, který má určitě o mnoho dalších nových uživatelů
tohoto gridu.
Našla by se dobrá duše, která by polopatisticky napsala co všechno a hlavně kam se má nakopírovat do rozpracované aplikace, aby Grido fungovalo přesně tak, jak funguje v demo?
Pokud si stáhnu distribuční verzi, tak v ní vidím pouze adresář
Grido, který nakopíruji do \lib a pak ještě client-side a v něm
2 soubory, které umístím do příslušných adresářů \css a \js.
Grido mi pak v mé aplikaci sice nějak funguje, ale s nepoužitelným
vzhledem.
Pochopitelně grido-sandbox jsem si na instaloval na locale a funguje správně
stejně jako demo.
Je to trochu vada na kráse, jelikož bych očekával, že nakopíruji vše
potřebné do mé aplikace a jedu.
Editoval mpis (7. 5. 2014 13:36)
- Jiří Nápravník
- Člen | 710
Pokud ti jede grido správně ale špatný vzhled, tak máš blbě nalinkovaný css a js, zkontroluj tedy jestli je máš správně v šabloně.
- mpis
- Člen | 65
V šabloně mám ty dva soubory pochopitelně zapsané správně.
A psal jsem, že „nějak funguje“, ale určitě ne správně. Například
po kliku na třídění se překresluje celá stránka místo samotného gridu.
Nebo pro změnu počtu řádků se musí kliknout na tlačítko, které v demo
vůbec není vidět.
Tak teď nevím, co s tim a termín se blíží.
- Jiří Nápravník
- Člen | 710
Pokdu temi dvema soubory myslis grido.js a grido.css, tak to je samozrejme malo, pokud chces funkcionalitu co je v demu. K demu potrebujes pridat loicky vsechny js soubory, co jsou v grido-sandbox – jquery, nette.ajax, jquery pluginy, atd.
- koprkuba
- Člen | 24
mpis napsal(a):
V šabloně mám ty dva soubory pochopitelně zapsané správně…
Doporučil bych pořádně prostudovat Live DEMO konkrétně se podívat jaké js soubory jsou naimportovány do stránky a co že to vlastně provádějí.
Konkrétně to co píšeš vypadá, že Ti nefunguje AJAX, takže bych se
podíval do scriptu grido.ajax.js. Klidně ko můžeš jen vložit do stránky a
mělo by to fungovat.
Také se hodí prostudovat si grido.ext.js, to je soubor ve kterém jsou
rozšíření jako je datepicker a onhashchange viz. MDN
- dryb
- Člen | 8
Mám v šabloně stránky formulář s filtrem a seznam s gridem:
{control protocolFilterForm}
{control grid}
Podle zadání v protocolFilterForm nastavuju datovy zdroj pro grid.
Ale po kliknutí na sloupec v gridu kvůli setřídění se načte znovu
celá stránka s default nastavením formuláře
protocolFilterForm.
Co je špatně?
- kolsi
- Člen | 131
sasule napsal(a):
kolsi napsal(a):
Výborně, zrovna jsem se chtěl zeptat, jestli jde nějak jednoduše udělat MultiSelect filter :-) jenom koukám, že to nefunguje pro ArraySource, tak se musím podívat, jak to vlastně funguje :)
ArraySource prověřím jak bude chvilka – sám ArraySource nevyužívám, prioritou pro mě bylo Doctrine a Nette\Database.
Jelikož používám většinou ArraySource, tak jsem kód upravil, aby pro něj šlapal bez problému. Jenže teď jsem ten MultiSelect filtr chtěl použít s běžným NetteDatabase modelem a koukam, že ono to nefunguje ani s ním (bez ohledu na moje úpravy pro ArraySource).
- pokud není ani jedna volba z multiselectu zaškrtnutá, tak to hází výjimku „Invalid parameter number: no parameters were bound“
- pokud je vybrána právě jedna volba, tak to funguje
- pokud je vybrána více jak jedná volba, tak to hází „Invalid parameter number: number of bound variables does not match number of tokens“
Problém vidím v tom, že se vytváří dotaz ve stylu $selection->where(‚authtype IN (?)‘, array(1, 2)), což je špatně, protože array v parametru určuje hodnoty pro zástupné otazníky v podmínce.
EDIT: zrovna tak DateRange filter nefunguje pro ArraySource: Condition ‚BETWEEN ? AND ?‘ not implemented yet.
Editoval kolsi (16. 5. 2014 9:17)
- libik
- Člen | 96
Grido mi zobrazovalo 11 zaznamu (strankovani po 10). Na 2. strance jsem smazal ten 11. a koncim v ladence s notice „Page is out of range.“
<?php 439: trigger_error(„Page is out of range.“, E_USER_NOTICE);?>
Nastaveni grida mam:
<?php
$grid = new \Grido\Grid($this, $name);
$grid->setRememberState(true);
$grid->setModel($this->items->findAll());
$grid->setPerPageList(array(10, 20, 50));
$grid->setDefaultPerPage(10);
$grid->translator->lang = 'cs';
...
?>
V cem muze byt problem?
- raketoplan2005
- Člen | 147
Ahoj,
řeším teď Custom Filter pro datum. Mám jeden sloupec s datem a chtěl bych použít něco jako DateRange ale s tím že bych měl dva CustomFiltry jeden pro datum_od a druhý pro datum_do.
Chtěl jsem podobně jako to mám už u jednoho select filtru na status udělat něco jako vlastní Condition k
$grid->addFilterDate('date_from', 'Datum od')
, ale nepodařilo se mi takovou podmínku (resp. formát jak ho předat Gridu, podmínka je nahradit LIKE za >=) vymyslet.
Je to nesmysl? Děkuji
Editoval raketoplan2005 (21. 5. 2014 11:43)
- Foi
- Člen | 8
Mám tu jednu chybu, která se projeví po ajaxovém požadavku, ostatní ajaxové prvky na stejné stránce vrací čistou stránku bez chyby.
exception 'Nette\InvalidStateException' with message 'Cannot send header after HTTP headers have been sent (output started at /data/web/virtuals/63812/virtual/www/subdom/c/temp/cache/latte/subdom-c-app-AdminModule-templates-layout-latte-e3dd54fd44eb173f5ff428ff8ea29bab.php:30).' in /data/web/virtuals/63812/virtual/www/subdom/c/vendor/nette/http/src/Http/Response.php:314
Stack trace:
#0 /data/web/virtuals/63812/virtual/www/subdom/c/vendor/nette/http/src/Http/Response.php(95): Nette\Http\Response->checkHeaders()
#1 /data/web/virtuals/63812/virtual/www/subdom/c/vendor/nette/http/src/Http/Response.php(131): Nette\Http\Response->setHeader('Content-Type', 'application/jso...')
#2 /data/web/virtuals/63812/virtual/www/subdom/c/vendor/nette/application/src/Application/Responses/JsonResponse.php(69): Nette\Http\Response->setContentType('application/jso...')
#3 /data/web/virtuals/63812/virtual/www/subdom/c/vendor/nette/application/src/Application/Application.php(156): Nette\Application\Responses\JsonResponse->send(Object(Nette\Http\Request), Object(Nette\Http\Response))
#4 /data/web/virtuals/63812/virtual/www/subdom/c/vendor/nette/application/src/Application/Application.php(88): Nette\Application\Application->processRequest(Object(Nette\Application\Request))
#5 /data/web/virtuals/63812/virtual/www/subdom/c/www/index.php(8): Nette\Application\Application->run()
#6 {main}
(stored in /data/web/virtuals/63812/virtual/www/subdom/c/log/exception-2014-05-21-17-48-22-e205bb8b37c69fa280657ade11b2b859.html)
- lucas
- Člen | 2
Ahoj, umí současná verze vícenásobné řazení sloupců? Díval jsem se, že vnitřně podporované je a dokonce na live demu pokud přidám do adresy druhý sloupec, tak se data podle více sloupců skutečně seřadí, ale zdá se, že to není uživatelsky podporované, respektive nemohu najít postup ani zmínku jak to zprovoznit. Poradil by mi prosím někdo? Děkuji.
- lucas
- Člen | 2
oli: to asi není ono, vícenásobné řazení je, že data mohou být seřazená podle více než jednoho sloupce, Grido to vnitřně podporuje, důkazem je např. http://grido.bugyik.cz/example/#…[card]=asc&grid-sort[gender]=asc
ale vypadá to, že to není uživatelsky dořešené, protože při kliknutí na jiný sloupec se řazení přesune (tedy nepřidá)…používal jsem dříve DataGrid od Romana Sklenáře, který vícenásobné řazení uměl, ale už pár let není vyvíjen a nejspíš kvůli nekompatibilitě s novým Nette se vytratil z Doplňků
- Ja
- Člen | 260
Co se tyce ajaxu, tak mam problem, ze poprvy se mi filtrovani provede ajaxem, podruhy uz se refreshuje cela stranka.
Nestalo se vam to nekomu? Po letmym pohledu do jska, se to binduje pres .on(), takze by to nemelo vyzadovat externi znovunabindovani, na ten formular.
Nebo jak to resite? Diky moc
- vojty
- Člen | 19
Ahoj kluci,
poradíte mi prosím někdo jak mohu udělat redraw componenty gridu po operaci?
Mám komponentu UsersGrid poděděnou od Grida a v ní navěšeny tenhle
callback pro operace
<?php
public function tableOperationsHandler($operation, $id)
{
$this->getPresenter()->tableOperationsHandler($operation, $id);
$this->redrawControl();
}
?>
hlásí mi to ale : Component name must be integer or string, NULL given
- kolsi
- Člen | 131
Nějaká rada k setOperation? Mám grido s ArraySource modelem, každý řádek je identifikován pomocí sloupce „name“ a teď chci přidat operace (např. hromadné mazání apod.). Zde nastává problém:
<?php
$grid->setOperation(array('delete' => 'Delete'), function($operation, $files) {
})->setPrimaryKey('name');
?>
hází tento error: Component name must be non-empty alphanumeric string
Problém vidím v tom, že grido použije rovnou daný klíč (v mém případě „name“) jako název pro checkbox, což ale Nette nedovolí, pokud se nejedná čistě o alfanumerický řetězec (čili např. „nazev-souboru.txt“ neprojde). Nějaký nápad, jak toto řešit?
- raketoplan2005
- Člen | 147
Ahoj,
přidal jsem si do Grida where podmínku pro addFilterCheck
s ArrayResource:
$grid->addFilterCheck('filled', 'Pouze nevyplněné')
->setWhere(function($value, $row) {
return (!isset($row['item']));
});
Což funguje správně, ale jen pokud grid nemá setRememberState() na TRUE. Pokud má setRememberState() na TRUE, pak mi po prvním zaškrtnutí filtru správně zmizí položky které mají nějakou hodnotu, ale zmizí už navždy (resp. do kliknutí na „reserovat“).
Děje se to, že při zaškrtnutí se nastaví
productsGrid-filter[filled]=1
a pří odškrtnutí pak v URL
zůstane productsGrid-filter[filled]=
Dokázali byste mi prosím poradit kde hledat chybu? Děkuji
Editoval raketoplan2005 (6. 6. 2014 11:57)
- nejman
- Člen | 13
Ahoj,
zkousel jsem na ‚http://grido.bugyik.cz/example/outer/‘ FilterCheck na
‚Only preferred girls :)‘ a
zda se mi, ze nefunguje na Nette/Database… Zkousel jsem pouzit i u sebe, a
nedari se mi rozbehnout
funkcnost ani nad existujicim sloupcem ani na virtualnim. Jak ma byt udelat
addFilterCheck?
Zkousel jsem:
<?php
$grid->addFilterCheck('name2', 'Test')
->setCondition(array(
TRUE=>array('name','=','h403_13032614')));
?>
nebo
<?php
$grid->addFilterCheck('name2', 'Test')
->setCondition(array(
array('name','=','h403_13032614'));
?>
nebo
<?php
$grid->addFilterCheck('name2', 'Test')
->setCondition(array(
TRUE=>array('name','= ?','h403_13032614')));
?>
A nic z toho nefungovalo. name je realny nazev sloupce v DB. V SQL logu
se vetsinou objevi podminka
where 0=1 (to asi zpusobuje setupEmpty()). Nefunguje mi ani to demo
na webu…
Jaky maji byt parametry setCondition? Z dokumentace mi to jasne neprislo.
Predem diky.
Editoval nejman (20. 6. 2014 17:52)
- nejman
- Člen | 13
Ahoj,
zije jeste o5? Koukam, ze 1/4 roku autor Grida neni na foru. Nemate nejakou
informaci o autorovi? Rozmyslim, ktery z datagridu pouzit. Zatim se mi zda
nejpouzitelnejsi Grido, ale jestli je to mrtvy
projekt, mohl by mi nekdo doporucit alternativu? Drive jsem pouzival datagrid od
Romana Sklenare,
a Grido mi prijde hodne podobny a kompatibilni…
Diky,
Honza
- nejman
- Člen | 13
Zkousel jsem:
<?php $grid->addFilterCheck('name2', 'Test') ->setCondition(array( TRUE=>array('name','=','h403_13032614'))); ?>
nebo
<?php $grid->addFilterCheck('name2', 'Test') ->setCondition(array( array('name','=','h403_13032614')); ?>
nebo
<?php $grid->addFilterCheck('name2', 'Test') ->setCondition(array( TRUE=>array('name','= ?','h403_13032614'))); ?>
Sice setCondition jsem nerozbehl, ale podarilo se mi filtrovat pres setWhere
nad
dibi fluent. Pokud by se nekomu hodilo, tak jsem pouzil:
<?php
$grid->addFilterCheck('name2', 'Only pref')
->setWhere(function($value, $row) {
return $row->removeClause('where')->where('name=%s','h403_13032614');
});
?>
removeClause
zrusi aktualne nastavene filtracni podminky, a
prida jen tu jednu specialni…
Pokud by nekdo vedel, jak resit pres setCondition budu rad.
- o5
- Člen | 416
nejman napsal(a):
Ahoj,
zije jeste o5? Koukam, ze 1/4 roku autor Grida neni na foru. Nemate nejakou informaci o autorovi? Rozmyslim, ktery z datagridu pouzit. Zatim se mi zda nejpouzitelnejsi Grido, ale jestli je to mrtvy
projekt, mohl by mi nekdo doporucit alternativu? Drive jsem pouzival datagrid od Romana Sklenare,
a Grido mi prijde hodne podobny a kompatibilni…Diky,
Honza
Zkus třeba někdy otevřít github.com a podívat se tam. Jinak posuzovat životnost projektu dle aktivity na tomhle fóru si asi nemyslel vážně viď? Ale chápu, že člověk co nikdy nedělal open-source nedokáže pochopit co času to stojí a ty pohledy okolí, že ve volném čase děláš něco zadarmo…
Editoval o5 (1. 7. 2014 15:01)
- nejman
- Člen | 13
Zkus třeba někdy otevřít github.com a podívat se tam. Jinak posuzovat životnost projektu dle aktivity na tomhle fóru si asi nemyslel vážně viď? Ale chápu, že člověk co nikdy nedělal open-source nedokáže pochopit co času to stojí a ty pohledy okolí, že ve volném čase děláš něco zadarmo…
Ahoj,
promin, nechtel jsem se te nejak dotknout. Chapu, ze casu je pomalu. To byl spis
dotaz, jestli se projekt jeste vyviji, protoze prede mnou bylo mnoho dotazu, na
ktere nikdo neodpovedel. Cetl jsem vsech 12 stranek prispevku, a ze zacatku
bylo od tebe mnoho komentu, coz kontrastovalo s tema poslednima mesicema. Jako
kdyz nekdo nenapise 14 dni, mesic, OK. Ale 1/4 roku mi prislo uz divny. Treba,
ze se autor nekam odstehoval,
nema na to cas, resi problemy v praci, atd. Pokud by nikdo na muj dotaz
neodpovedel, nic se nedeje, spis,
ze mne zarazely ty nezodpovezene dotazy nade mnou. Takze sorry, jinak jsem si
nejak sam poradil.
Mej se,
Honza
- theo
- Člen | 57
Grido je fajn, používám ho (zatím) v jednom projektu, ale hned ze startu jsem narazil na jeho jistou provázanost s SQL databázovým světem. Dělám totiž na projektu, kde podkladovou databází je MongoDB a pro ni (a ostatní NoSQL) databáze je trochu problém Grido použít, protože je závislé na Grido\DataSources třídě, která tak nějak počítá s tím, že podkladová databáze je SQL (hlavně při filtrování).
Naštěstí není zas tak velký problém si Grido\DataSources podědit a postavit si nad ní vlastní wrapper třídu, která dokáže implementovat toto chování i nad MongoDB. Pokud by měl autor zájem o tuto třídu, můžu ji nabídnout jako příspěvek k vývoji (samotná třída je vlastnictvím firmy, nicméně asi by nebyl problém se domluvit buď na „reimplementaci“, nebo dvojím licencování, nebo změně licence). Myslím, že by bylo fajn, kdyby tak dobře udělaná komponenta uměla pracovat i s nejrozšířenější NoSQL databází.
- Tori
- Člen | 32
Jak se řeší zobrazení v gridu, když z DB tahám data ve vztahu 1:M (např. uživatel a několik zaměstnavatelů)?
- Když nechám jednoho zaměstnavatele na jeden záznam, tak mi řádky s duplicitním ID uživ. vyhodí error: „Component with name [ID uživatele] already exists“. Dá se seskupování řádků se stejným ID řešit až v Gridu, místo v datasource?
- Když seskupím data podle ID uživatele a pro zaměstnavatele použiju
GROUP_CONCAT(company.name SEPARATOR "; ")
, tak mi zase našeptávač ve filtru nabízí i hodnoty jako „firma1; firma2“. Dá se to nějak jednoduše upravit, aby našeptávač vracel samostatné hodnoty? (Vím osetSuggestionCallback
, ale na straně DB se čte z pohledu, který už má nastavené to seskupování podle ID, takže bych musela použít nějakéLIKE "%$query%"
a to by bylo asi dost pomalé.)
Editoval Tori (26. 7. 2014 9:28)
- ryu
- Člen | 29
Zdravím, měl bych takový feature request. Potřeboval bych něco jako podmíněné buňkové akce, tedy pokud má daná buňka danou hodnotu zobrazit tam tlačítko s takovou a takovou akcí. Vím, že to jde řešit přes render ale to je takové nepěkné.
Dále by to chtělo udělat lepší bootstrap podporu, páč abych určil barvu tlačítka, musel jsem:
$grid->addActionHref('action2', 'Aktivovat')
//->setIcon('plus')
->getElementPrototype()
->addAttributes(array('title' => 'Aktivovat'))
->addAttributes(array('class' => 'btn-sm btn-success'));
A ktomu ještě upravit template aby ty třídy vypsal.
Taky by bylo moc fajn, kdyby se input ve filtrovani daly taky pridat nejake vlastni css tridy, pac bootstrap to moc roztahuje.
- kralik
- Člen | 230
Ahoj,
bohužel jsem nějak zaslepen a při používání skvélé komponenty Grido
jsem narazil.
Tímto bych rád požádat o pomoc.
V Gridu potřebuji použít template šablonu v níž mám klasicky přes <ul><li></li></ul> vytvořené menu.
<?php
$grid->addColumnText('akce', 'Akce')
->setCustomRender(__DIR__ . '/../templates/Web/sbBubak.latte');
?>
Bohužel nemohu přijít na dvě věci:
- Jak do této šablony poslat nějakou proměnnou např. $mojeCislo
- Nefungují mi odkazy přes <a n:href=„Web:akce“> objeví se chyba: Component with name ‚Web‘ does not exist
Věřím, že to je triviální dotaz, ale nějak mi to zatím nedocvaklo jak na to.
Mooc díky všem
- kolsi
- Člen | 131
Má někdo nějaký nápad, jak dělat správně řazení podle datumů v případě, že mám datum a čas rozdělený do více sloupců, resp. mám sloupce Datum, Od, Do? Když pak seřadím podle data sestupně, tak to samozřejmě bude matoucí, protože jednotlivé dny sice sestupně budou, ale časy v rámci jednoho dne budou vzestupně.
- o5
- Člen | 416
Sorry, ale nechodí mi notifikace z tohoto vlákna.
@theo napsal(a):
Pokud by měl autor zájem o tuto třídu, můžu ji nabídnout jako příspěvek k vývoji
Určitě pošli pull, rád zmerguju!
@Tori napsal(a):
Jak se řeší zobrazení v gridu, když z DB tahám data ve vztahu 1:M (např. uživatel a několik zaměstnavatelů)?
Nevím jestli jsem tě pochopil, ale řešil bych to nějak takto:
$grid->addColumnText('zamestnavatel', 'Zamestnavatel')
->setCustomRender(...);
->setFilterText()
->setSuggestion(); //našeptávání jen z tabulky `zamestnavatel`
@ryu napsal(a):
Potřeboval bych něco jako podmíněné buňkové akce…
Zkus co ti radil @Casper, $action->setDisable()..
@ryu napsal(a):
Dále by to chtělo udělat lepší bootstrap podporu
Ono udělat lepší podporu pro bootstrap není úplně nejlepší, když někdo má raději třeba Foundation, každopádně se mi současný stav taky nelíbí
@ryu napsal(a):
podpora groupActions by byla moc fajn
Co jsou groupActions?
@kralik napsal(a):
Jak do této šablony poslat nějakou proměnnou např. $mojeCislo
Koukni na příklad, mohl bys to udělat podobně jako 4presenter->template->baseUri
@kralik napsal(a):
Nefungují mi odkazy přes <a n:href=„Web:akce“> objeví se chyba: Component with name ‚Web‘ does not exist
Musíš použít {plink}
- kralik
- Člen | 230
Tak to jsem teda pěkná LAMA.
zkoušel jsem n:href a {link}, ale už mě nenapadlo {plink} :-(
Mooc díky za pomoc.
Proměnná do šablony
Do Renderu v Presenteru přidat požadovanou proměnnou.
<?php
public function renderMojeDoc() {
$mojeCislo = 27;
$this->template->mojeCislo = $mojeCislo;
}
?>
V šabloně je pak proměnná dostupná
<?php
{var $mojeCislo = $presenter->template->mojeCislo}
Moje číslo: {$mojeCislo}
?>
Vše maká skvěle.
Ještě jednou díky a velká poklona za GRIDO.
Všem přeji hezký den
- vojty
- Člen | 19
Ahoj,
při inline editaci dostávám chybu:
exception ‚Nette\MemberAccessException‘ with message 'Call to
undefined method Grido\DataSources\Doctrine::getRow()
Data se uloží ale neprovede se skrytí inputu.
Padne to na
Grido\Components\Columns\Editable
238 $data = $this->grid->model->getRow($this->grid->primaryKey, $id)->fetch();
Díky za radu.
tak ten problém přivodil novej commit, který přidává podporu inline editaci pro custom renderer, ale je to vyřešený jen tak napůl…:/
Editoval vojty (26. 8. 2014 17:01)
- CZechBoY
- Člen | 3608
Ja napsal(a):
@CZechBoY: pozadavek zakaznika, bohuzel to tak musi byt
edit: nechci to editovat, chci to pouze zobrazit
Takže chceš zobrazit obsah článku v gridu?
Použij
->setCustomRenderer(function($row) {
return \Nette\Utils\Html::el('div')->setHtml($row->mojeHtml);
});
edit: jo zapomněl jsem uvozovky
Editoval CZechBoY (31. 8. 2014 20:00)
- srbt
- Člen | 2
Dostávám data z api, kterému mohu dát filtr, offset a count a ono mi
vrátí příslušný úsek dat a celkový počet dat odpovídajících
filtru.
Narazil jsem na problém s pagerem – nejdřív chce znát celkový počet
dat a pak teprve vrací informace pro limit. Nemohu se ptát api dvakrát,
provizorně jsem to vyřešil tím, že si nechám poslat data všechna a limit
aplikuju pomocí array_slice jako to dělá ArraySource, ale to se s rostoucím
objemem dat stává neúnosným.
Prosím, může někdo poradit, zda jsem něco přehlédl, nebo se opravdu bez
forku a změny v nette či grido neobejdu?
- s4muel
- Člen | 92
@srbt skus toto: http://o5.github.io/…tion.cs.html#…, konkretne prepisanie metody getCount()
- srbt
- Člen | 2
Děkuji za odpověď, nenapadá mne jak getCount upravit, aby fungoval jak potřebuji. Zatím nejlépe mi fungovala úprava:
diff --git a/Grido/Grid.php b/Grido/Grid.php
index fd4a3f6..3e70bea 100755
--- a/Grido/Grid.php
+++ b/Grido/Grid.php
@@ -840,9 +840,10 @@ class Grid extends Components\Container
protected function applyPaging()
{
- $paginator = $this->getPaginator()
- ->setItemCount($this->getCount())
- ->setPage($this->page);
+ $paginator = $this->getPaginator();
+ $paginator->setPage($this->page);
+ $this->model->limit($paginator->getOffset(), $paginator->getLength());
+ $paginator->setItemCount($this->getCount());
$perPage = $this->getPerPage();
if ($perPage !== NULL && !in_array($perPage, $this->perPageList)) {
@@ -850,7 +851,6 @@ class Grid extends Components\Container
$perPage = $this->defaultPerPage;
}
- $this->model->limit($paginator->getOffset(), $paginator->getLength());
}
protected function createComponentForm($name)
tak jen doufám, že jsem nic nerozbil.
- chladekt
- Člen | 10
Třídění podle více sloupců (šipečky u více sloupců) se tu už řešilo. Předpokládám, že stále není podporováno. Plánuje se to? Kdy by to mohlo být? Nevíte, jaký jiný plugin pro Nette by to umožňoval? jQuery plugin tablesorter to umí. Možná ho proto upřednostním před tímto pluginem.
- mpis
- Člen | 65
V definici komponenty s grido mám toto:
$action->setCustomRender(function($item, \Nette\Utils\Html $el)
{
$el->removeChildren();
$el->addAttributes(array(
'href' => $this->link('Equipment:equipmentView', array(
'equipment_id' => $item->equipment_id,
'docarea_id' => $this->template->docarea_id,
'doccategory_id' => $item->doccategory_id)),
'class' => 'icon view',
'title' => 'Prohlížet přístroj',
));
return $el;
});
Jak mám napsat řádek s textem pro title
'title' => 'Prohlížet přístroj',
aby se mi ten text překládal translatorem vestavěným v grido. Takhle,
jak to je, se text nepřekládá. Věci jako nadpisy sloupců apod. to
překládá správně.
Hledám a zkouším celý večer a pořád na nic nemůžu přijít.
A ještě jedna otázka. Co a jak mám udělat, abych mohl tento translátor
v Grido mohl použít v celé aplikaci na formuláře a šablony.
Návod na použití translátoru v dokumentaci Nette je zoufale nekonkrétní a
podrobnější komplexní návod nemůžu nikde najít.