Nextras\Datagrid – datagrid se vsim jak ma byt

hrach
Člen | 1822
+
0
-

@martinit: moc nechapu tvuj usecase, muzes ho zkusit rozvest a vymyslime, co s tim,… nebo poslat pr… ale … zatim jen takto.

MartinitCZ
Člen | 580
+
0
-

@**hrach**: Nejde o nic složitého. Chci jen zdůraznit možnost řazení tím, že jí ukážu i v případě neřezaní dle daného sloupce.
Na #L35 hodit toto:

{else}
	<span class="grid-sort-symbol"><em>&#9650;</em><em>&#9660;</em></span> // Ten znak by to chtělo lepší, ale neznám žádný takový
{/if}
hrach
Člen | 1822
+
0
-

Ahá. Tak mi udělej pull-request který tam přidá prázdný span s classou. Prave jsem mergnul pridani class do tech jinych spanu.

n.u.r.v.
Člen | 476
+
0
-

hrach napsal(a):

@n.u.r.v.

  1. v kazdem blocku mas dostupny $row, coz je proste ten radek, co se renderuje
  2. doporucuji jen pres css, alternativne si muzes prepsat block rowlink
  3. bud si tlacitka pridej ve svem editFormFactory (oni se nepridaji znovu, pokud uz existuji), nebo si prepis block row-actions-editlink
  4. to aktualne nejde, idealne asi by to chtelo PR, ktery zavede tady novy block.

Ok, díky… ještě mám jeden problém – potřebuji do editačního formuláře dát select. Tento select potřebuji naplnit, ale na metodu v prezenteru, která mi vrací pole pro select, se nedostanu -nevíte co s tím?

hrach
Člen | 1822
+
0
-

a kde ten editacni form (teda spis container vytvaris?). normalne v clousure muzes dat $this->, pridapdne v 5.3 pres use ($data)

n.u.r.v.
Člen | 476
+
0
-

hrach napsal(a):

a kde ten editacni form (teda spis container vytvaris?). normalne v clousure muzes dat $this->, pridapdne v 5.3 pres use ($data)

Takto vytvářím grid s formulářem pro editaci:

public function createComponentGrid() {
        $grid = new \Nextras\Datagrid\Datagrid;
        $grid->addColumn("SURNAME", "Příjmení")->enableSort();
        $grid->addColumn("NAME", "Jméno")->enableSort();
        $grid->addColumn("GROUPMNAME", "Skupina");
        $grid->setEditFormFactory(function($row) {
                    $form = new Nette\Forms\Container;
                    $form->addText('SURNAME')
                            ->setAttribute('autofocus', 'autofocus')
                            ->setAttribute('class', 'form-control form-required')
                            ->setAttribute('style', 'margin-bottom: 0px;height:25px; padding: 0px;');
                    $form->addText('NAME')
                            ->setAttribute('autofocus', 'autofocus')
                            ->setAttribute('class', 'form-control form-required')
                            ->setAttribute('style', 'margin-bottom: 0px;height:25px; padding: 0px;');
                    $form->addSelect('GROUPID', null, $this->fillSelect());
                    $form->addHidden('HASH');
                    $form->addSubmit("save", "Uložit")
                            ->setAttribute('class', 'btn btn-snd')
                            ->setAttribute('style', 'height:25px;');
                    !$row ? : $form->setDefaults($row);
                    return $form;
                });
        $grid->setRowPrimaryKey('ID');
        $grid->setDataSourceCallback($this->getDataSource);
        $grid->setEditFormCallback($this->saveData);
        $grid->setDefaultLatte(__DIR__ . '/../templates/Students2/Datagrid.latte');
        $grid->setDefaultText('<td colspan="5" style="color:#323232; font-style:italic; line-height:30px;">Nezvolili jste třídu nebo nejsou přiřazeni žádní žáci ke třídě.</td>');
        $grid->addCellsTemplate(__DIR__ . '/../templates/Students2/@cells.latte');
        return $grid;
    }

metoda fillSelect()), která vrací pole pro select je v presenteru, jako je továrna pro grid.

Jenže dostávám chybu: Fatal Error

Using $this when not in object context

hrach
Člen | 1822
+
0
-

Nauc se php ;) v 5.4 by ti to uz fungovalo.

$presenter = $this;
$grid->setEditFormFactory(function($row) use ($presenter) {
n.u.r.v.
Člen | 476
+
0
-

hrach napsal(a):

Nauc se php ;) v 5.4 by ti to uz fungovalo.

$presenter = $this;
$grid->setEditFormFactory(function($row) use ($presenter) {

jsem to ale píp…Ještě ale musím přijít na to, jak udělat následující:

tabulka má sloupce: NAME, SURNAME, GROUPNAME,… ->tyto tři se mohou editovat, select je GROUPNAME.

Jenže když plním select hodnotami, tak mu předám pole ve tvaru ID=>GROUPNAME : array(„1234“=>„xxx“, „5678“=>„yyy“…);, což je problém, protože při generování formuláře to nesedí – je očekáváno, že to co je vypsáno v tabulce, bude v poli jako index a ne hodnota…, tedy dostanu toto:

Value ‚xxx‘ is out of range of current items.

Re4DeR
Člen | 71
+
0
-

Ahoj, mám aplikaci která je komplet za prihlasenim.
a ted jsem narazil na problém s ajaxem – razeni gridu funguje normalne, ale editace ne – pri kliku na „Edit“ se nic nestane. pri vypnutem ajaxu je editace v klidu.
javascriptova konzole pise ze „Failed to load resource: the server responded with a status of 500 (Internal Server Error)“ – jasne, url co to chce je pro neprihlaseneho opravdu nedosupna. ale jak je mozné ze filtrovani funguje? je nějaké řešení?

vvoody
Člen | 910
+
0
-

Možno by pomohlo pozrieť do logu čo tu pětistovku vyhodilo.

Re4DeR
Člen | 71
+
0
-

njn tak to bylo debilni – v selectu byl duplicitni sloupec, nenapadlo me ze ajax a non ajax pokladaj jiny dotazy. díky moc

n.u.r.v.
Člen | 476
+
0
-

Hmm, ještě tu mám jeden problém – mám několik datagridů a všechny mají základ stejný, ale v jednom mi nefunguje u editace tlačítko cancel – nastane chyba 500 a v logu je toto:

Exception

Row not found
File: ...\vendor\others\Nextras\Datagrid\Datagrid.php:283
273:            if ($key === NULL) {
274:                return $this->data;
275:            }
276:
277:            foreach ($this->data as $row) {
278:                if ($this->getter($row, $this->rowPrimaryKey) == $key) {
279:                    return $row;
280:                }
281:            }
282:
283:            throw new \Exception('Row not found');
284:        }
285:
286:        /**
287:         * @internal

Nevíte co to může být? Díky

hrach
Člen | 1822
+
0
-

no tak posli jak mas nakonfigurovany ten jeden.

n.u.r.v.
Člen | 476
+
0
-

hrach napsal(a):

no tak posli jak mas nakonfigurovany ten jeden.

Presenter:

...
...
public function createComponentGrid() {
        $presenter = $this;
        $grid = new \Nextras\Datagrid\Datagrid;
        $grid->addColumn("SURNAME", "Příjmení")->enableSort();
        $grid->addColumn("NAME", "Jméno")->enableSort();
        $grid->addColumn("GROUPNAME", "Skupina");
        $grid->addColumn("RELATION_NUMBER", "Počet relací")->enableSort();
        $grid->setEditFormFactory(function($row) use ($presenter) {
                    $form = new Nette\Forms\Container;
                    $form->addText('SURNAME')
                            ->addRule(Form::MAX_LENGTH, 'Maximální délka příjmení je %d znaků.', $presenter->context->parameters['userMaxLengthSurName'])
                            ->setAttribute('autofocus', 'autofocus')
                            ->setRequired("Vyplňte jméno a příjmení uživatele.")
                            ->setAttribute('class', 'form-control form-required')
                            ->setAttribute('placeholder', 'Příjmení uživatele')
                            ->setAttribute('style', 'margin-bottom: 0px;height:25px; padding: 0px;');
                    $form->addText('NAME')
                            ->addRule(Form::MAX_LENGTH, 'Maximální délka jména je %d znaků.', $presenter->context->parameters['userMaxLengthName'])
                            ->setAttribute('autofocus', 'autofocus')
                            ->setRequired("Vyplňte jméno a příjmení uživatele.")
                            ->setAttribute('class', 'form-control form-required')
                            ->setAttribute('placeholder', 'Jméno uživatele')
                            ->setAttribute('style', 'margin-bottom: 0px;height:25px; padding: 0px;');
                    $form->addHidden('HASH');
                    $form->addHidden('GROUP_ID');
                    $form->addSubmit("save", "Uložit")
                            ->setAttribute('class', 'btn btn-snd btn-sm');
                    $form->addSubmit("cancel", "Zrušit")
                            ->setAttribute('class', 'btn btn-snd btn-sm');
                    !$row ? : $form->setDefaults($row);
                    return $form;
                });
        $grid->setRowPrimaryKey('ID');
        $grid->setDataSourceCallback($this->getDataSource);
        $grid->setEditFormCallback($this->saveData);
        $grid->setDefaultLatte(__DIR__ . '/../templates/Users2/Datagrid.latte');
        $grid->setDefaultText('<td colspan="5" style="color:#323232; font-style:italic; line-height:30px;">Nezvolili jste skupinu nebo nejsou přiřazeni žádní uživatelé ke skupině.</td>');
        $grid->addCellsTemplate(__DIR__ . '/../templates/Users2/@cells.latte');
        return $grid;
    }

public function saveData(Nette\Forms\Container $form) {
        $values = $form->getValues();
...
...
}

public function getDataSource($filter, $order, Paginator $paginator = NULL) {
        $selection = $this->prepareDataSource($filter, $order);
        /* if ($paginator) {
          $selection->limit($paginator->getItemsPerPage(), $paginator->getOffset());
          } */
        return $selection;
    }

    private function prepareDataSource($filter, $order) {
        $filters = array();
        foreach ($filter as $k => $v) {
            if ($k === 'ID' || is_array($v))
                $filters[$k] = $v;
            else
                $filters[$k . ' LIKE ?'] = "%$v%";
        }
        if ($order and is_array($order)) {
            $selection = $this->userRepository->getUsersList2($this->user->getIdentity()->firmId, $this->groupID, $order);
        } else {
            $selection = $this->userRepository->getUsersList2($this->user->getIdentity()->firmId, $this->groupID);
        }
        return $selection;
    }

Model:

public function getUsersList2($firmId, $groupId, $order=null) {//METODA PRO NACTENI SEZNAMU USERU VYBRANE SKUPINY
        $orderComplete = '';
        if(is_array($order) and count($order)==2){
            if($order[0]=='RELATION_NUMBER'){
                $orderComplete = ' ORDER BY '.$order[0].' '.$order[1];
            }else{
                $orderComplete = ' ORDER BY u.'.$order[0].' '.$order[1];
            }
        }
        return $this->database->getConnection()->query('SELECT u.ID, u.NAME, u.SURNAME, u.HASH, u.GROUP_ID,g.NAME AS GROUPNAME,
                          (SELECT count(ID) FROM relation WHERE relation.USER_ID = u.ID) AS RELATION_NUMBER
                     FROM user AS u, group AS g
                    WHERE g.ID = u.GROUP_ID and u.FIRM_ID = ' . intval($firmId) . ' AND u.GROUP_ID = ' . intval($groupId) . ' AND u.DATE_DELETE IS NULL and u.USER_TYPE = "S"'.$orderComplete)->fetchAll();
    }

public function saveData(Nette\Forms\Container $form) {
        $values = $form->getValues();
..
..
}

Editoval n.u.r.v. (16. 1. 2014 9:09)

Re4DeR
Člen | 71
+
0
-

razeni podle data nefunguje bych rekl – i v demu to zlobi http://nextras.cz/datagrid/full

hrach
Člen | 1822
+
0
-

jak poznam, ze to zlobi? Mne to funguje spravne, zda se.

Re4DeR
Člen | 71
+
0
-

omlouvám se, opět jsem něco přehlídl já.
díky za grid, je super

mrtnzlml
Člen | 140
+
0
-

Ahoj, jak se v tomto gridu elegantně řeší takové to, když z je selectbox z databáze a potřebujete ho ve sloupečku vypsat např. v češtině?

<?php
$form->addSelect('status', NULL, array(
	'new' => 'nové',
	'complete' => 'vyřízené',
));
?>

Takto je to v selectboxu v záhlaví, ale jak to hezky pořešit i v šabloně?

hrach
Člen | 1822
+
0
-

tak rozhodne si musis nadefinovat vlastni block toho sloupce.A jestli si predas do sablony nejakou promenou pole pro preklad, nebo si treba napises helper, ktery pouzivas i jinde… kazdopadne myslim ze neni problem pristoupit k sablone gridu.

hrach
Člen | 1822
+
0
-

tak rozhodne si musis nadefinovat vlastni block toho sloupce.A jestli si predas do sablony nejakou promenou pole pro preklad, nebo si treba napises helper, ktery pouzivas i jinde… kazdopadne myslim ze neni problem pristoupit k sablone gridu.

n.u.r.v.
Člen | 476
+
0
-

Ahoj, pořád mi nefunguje ten cancel v jedné sekci (v jiných mi funguje). Zjistil jsem, že když stisknu submit cancel, tak se form asi odešle, protože se provede metoda startup v presenteru, ale formulář se nezavře. Jak vlastně funguje cancel tlačítko?

n.u.r.v.
Člen | 476
+
0
-

Ahoj, konečně jsem na chybu přišel:

v metodě prepareDataSource jsem načítal data do gridu takto (zkráceně…):

$selection = $this->firmRepository->getUserList($this->user->getIdentity()->firmId, $this->groupID);

A problém byl v té prom. $this->groupID… Tato proměnná se plní v render metodě (je to param v url adrese). Jenže při cancel se proměnná neplní, takže proto vznikl ten problém…

Dal jsem to tedy do session (jiné řešení mě zatím nenapadá)

Honza_S
Člen | 12
+
0
-

Ahoj, dostal jsem se ve svém použití DataGridu do mrtvého bodu, kdy chápu, že mám někde chybu, ale nejsem schopen ji odstranit. Datagrid fuguje skvěle až do okamžiku kdy ve filtru použiju addon DateInput pak se processForm filtru zastaví na tom, že obdrží objekt DateTime.
Mám se zaměřit na tuto část DataGrid.php

<?php
$values = array_filter($values, function($val) {
	return is_array($val) ? (count($val) > 0) : (strlen($val) > 0);
	});
?>

nebo jsem úplně mimo a dá se to řešit jednodušeji?

vvoody
Člen | 910
+
0
-

Čo znamená „pak se processForm filtru zastaví“

Honza_S
Člen | 12
+
0
-

Laděnka vypíše na Datagrid.php:464

<?php
Warning

strlen() expects parameter 1 to be string, object given

	public function processForm(UI\Form $form){
...
			$values = $form['filter']->getValues(TRUE);
			unset($values['filter']);
463:                    $values = array_filter($values, function($val) {
464:                        return is_array($val) ? (count($val) > 0) : (strlen($val) > 0);
...
?>

$val je v tuhle chvíli objekt Nette\DateTime a tudíž je strlen($val) chybové.

Honza_S
Člen | 12
+
0
-

Tak jsem trochu pokročil, ale je to „na prasáka“ – vložením do DataGrid.php:463

<?php
...
foreach ($values as $key => $value) {
	if (is_object($value)){
	$values[$key]=$value->format("Y-m-d");
	}
}
...
?>

to mi funguje, ale v tomhle mám nějakou blbost

<?php
if ($value instanceof \Nette\DateTime){
...
?>
voda
Člen | 561
+
0
-

Úpravy datagridu už nejsou potřeba. Jinak DateInput nevrací \Nette\DateTime ale DateTime.

tomhrb
Člen | 23
+
0
-

mohu poprosit o nejaky better practice v obsluze valstniho signalu z DataGrid?
zatim jsem kyzeneho vysledku dosahl pouze touto konstrukci

class CustomDatagrid extends Datagrid {
	function handleMarkPresence($id, $present=0) {
	//obsluha
	}
}

a komponentu tedy pak

	public function createComponentGrid(){
		$grid = new CustomDatagrid;

…ale slovy herce Polaska – citim z toho takove to pi#o :D
diky

Editoval tomhrb (23. 2. 2014 16:26)

vvoody
Člen | 910
+
0
-

Čo sa ti na tom riešení nezdá?

tomhrb
Člen | 23
+
0
-

vvoody napsal(a):

Čo sa ti na tom riešení nezdá?

predevsim to, ze sem ho vymyslel sam :D 6. smyslem bych ocekaval nejakou metodu $grid->dejMneHandler. pokud je to ale OK, je to jedine dobre :)

MW
Člen | 606
+
0
-

Zdravím,

nemá prosím někdo nějaké řešení, jak na gridu zafixovat záhlaví?
Při posunu dolu, aby zůstalo viditelné ?

Díky!

tomhrb
Člen | 23
+
0
-

MW napsal(a):

Zdravím,

nemá prosím někdo nějaké řešení, jak na gridu zafixovat záhlaví?
Při posunu dolu, aby zůstalo viditelné ?

Díky!

v tomto duchu http://fixedheadertable.com/ ? osobne nemam :D

ali
Člen | 342
+
0
-

Zkousel nekdo zprovoznit paginator na dibi? Nejak se mi to nedari zprovoznit (spis moc nevim jak), zkousel jsem to udelat jak uz bylo popsano v tomto vlaknu, ale bezuspechu.. nejake rady?
komponenta

protected function createComponentGrid()
{
  $grid = new \Nextras\Datagrid\Datagrid;

  $grid->addColumn("order_id","#")->enableSort();
  $grid->addColumn("order","Order")->enableSort();
  $grid->addColumn("order_qty","Qty")->enableSort();
  $grid->addColumn("dept_code","Dept. code")->enableSort();
  $grid->addColumn("order_login","User")->enableSort();
  $grid->addColumn("order_time","Order time")->enableSort();

  $grid->setFilterFormFactory(function(){
    $form = new Nette\Forms\Container;

    $form->addText("order");
    $form->addText("dept_code");
    $form->addText("order_login");

    $form->addSubmit("filter","Filter data")->getControlPrototype()->class = 'btn btn-primary';
    $form->addSubmit("cancel","Cancel filter")->getControlPrototype()->class = 'btn';

    return $form;
  });

  $grid->setDatasourceCallback(
    function($filter,$order)
    {
      $dataSource = $this->warehouseModel->dataSource();

      // nastaveni WHERE pro data
      forEach($filter as $key => $value)
      {
        $dataSource->where("[$key] LIKE %s","%$value%");
      }

      // nastaveni razeni
      if($order!=null)
      {
        $dataSource->orderBy($order[0],$order[1]);
      }
      else
      {
        $dataSource->orderBy("order_id","DESC");
      }

      return $dataSource;
    }
  );

  return $grid;
}

model

public function dataSource()
{
  return $this->db->dataSource("SELECT *,(SELECT [login] FROM %n WHERE %n.[user_id]=%n.[user_id]) AS [order_login] FROM %n",self::TABLE_USERS,self::TABLE_PEGA_WAREHOUSE,self::TABLE_USERS,self::TABLE_PEGA_WAREHOUSE);
}

Editoval ali (7. 3. 2014 20:03)

ali
Člen | 342
+
0
-

a tak vyreseno, az tedka jsem nasel zdrojove kody z dema

ali
Člen | 342
+
0
-

Tak jsem narazil na dalsi problem a to ze mi nefunguje uprava radku, ajax pozadavek se provede, ale nenajede formular na upravu a v konzoli se mi vypise error v jQuery

GET http://localhost/_a/www/pega/warehouse/?grid-primaryValue=970&do=grid-edit 500 (Internal Server Error) jquery.min.js:3

zkousel jsem i vice verzi jQuery, vcetne toho z dema, ale pokazde stejny problem

formular pro upravy vypada takto

$grid->setEditFormFactory
(
  function($row)
  {
    $form = new Nette\Forms\Container;
    $form->addText("order")
      ->setRequired();

    $form->addText("order_qty")
      ->setRequired();

    $form->addSubmit("save","Save data");
    $form->addSubmit("cancel","Cancel editing");

    !$row ?: $form->setDefaults($row);
    return $form;
  }
);

$grid->setEditFormCallback($this->saveData);
ali
Člen | 342
+
0
-

Neuvedomil sem si ze se uklada log, kde je chyba detajleni popsana

Component with name 'edit' does not exist.

nejake rady?

hrach
Člen | 1822
+
0
-
  1. ladenku
  2. mas urcite nejnovejsi verzi datagridu? :)
ali
Člen | 342
+
0
-

a.

[2014-03-10 10-16-08] Nette\InvalidArgumentException: Component with name 'edit' does not exist. in C:\wamp\www\_a\vendor\nette\nette\Nette\ComponentModel\Container.php:159  @  http://localhost/_a/www/pega/warehouse/?grid-primaryValue=980&do=grid-edit  @@  exception-2014-03-10-10-16-07-1499d296160a2bf8576d0f8cf49db956.html

b. pro jistotu jsem si to jeste jednou stahnul z githubu, ale stejny problem

Editoval ali (10. 3. 2014 10:18)

ali
Člen | 342
+
0
-

Tedka jsem zjistil, ze jakmile mam nastaveny nejaky filtr, tak radek upravovat jde

hrach
Člen | 1822
+
0
-

ladenka je ten soubor exception-2014-03-10-10-16-07-1499d296160a2bf8576d0f8cf49db956.html, nekam to nahraj.

ali
Člen | 342
+
0
-

jo takhle, tady > http://uloz.to/…0bd5c09-html

Budry
Člen | 88
+
0
-

Zdravím,
mohl bych poprosit o radu jak správně upravovat defaulní layout?

Mám definováno

$datagrid->addCellsTemplate(__DIR__ . '/list.latte');

a v list.latte se snažím změnit table-open-tag
Toto spadne do chyby že makro redefine není

{redefine table-open-tag}
<table class="table table-bordered table-hover">
{/redefine}

Tento zápis to zase ignoruje a vykresluje pouze defaultní <table>

{define table-open-tag}
<table class="table table-bordered table-hover">
{/define}

Jak se tedy správně mění základní layout?

ali
Člen | 342
+
0
-

Budry, musis si redefine makro zadefinovat, viz https://github.com/…latte-macros

Budry
Člen | 88
+
0
-

A jo, vůbec sem si toho nevšiml. Díky

MW
Člen | 606
+
0
-

Zdravím,

kde prosím nejlépe nastavím výchozí řazení gridu?

pridal jsem si sice do modelu toto

public function prepareInvoicesDataSource($filter, $year, $order = NULL) {

	.......
	// default order
        if (!$order) {
            $order = array('since DESC');
        }

	........
	if ($order[0])
            $selection->order(implode(' ', $order));

        return $selection;
    }

ale to není asi správná cesta.
Třeba to nezobrazí order symbol v záhlaví, čehož bych chtěl dosáhnout.

Předem děkuji za pomoc !!!

hrach
Člen | 1822
+
0
-

Nedavno jswm presne tuto funkcionalitu commitnul. Melo by to byt v dev verzi a v demu ;-)

ali
Člen | 342
+
0
-

Mam takovy problem,

v tabulce mam user_id, ale zobrazuji misto user_id pres dalsi select patricny login.. jenze pokazde pri editaci radku, kdy vse zkontroluji a „unsetnu“ login a nahradim ho v poli patricnym user_id z jine tabulky, mi to spadne na vyjimce throw new \Exception('Row not found');

Mam neco spatne, nebo jen nejde upravit zaznam, ktery se v gridu nezobrazuje?

ali napsal(a):

jo takhle, tady > http://uloz.to/…0bd5c09-html

Honzo koukal ses na tento problem? Porad mi to nefunguje a vubec nemam tuseni co stim je, ze upravovat to jde jen tehdy, pokud je nastaven nejaky filtr ??

ali
Člen | 342
+
0
-

ali napsal(a):

Mam takovy problem,

v tabulce mam user_id, ale zobrazuji misto user_id pres dalsi select patricny login.. jenze pokazde pri editaci radku, kdy vse zkontroluji a „unsetnu“ login a nahradim ho v poli patricnym user_id z jine tabulky, mi to spadne na vyjimce throw new \Exception('Row not found');

Mam neco spatne, nebo jen nejde upravit zaznam, ktery se v gridu nezobrazuje?

takze jsem zjistil cim to je:

  1. mam sloupec „code“ a v nem hodnotu „AAA“
  2. nastavim si filtr pro sloupec „code“ a nastavim ho na „AAA“
  3. upravim jakykoliv vyfiltrovany zaznam a ve sloupci „code“ misto „AAA“ napisi „BBB“
  4. zaznam se upravi, ale nezmizne moznost jeho editace a aplikace spadne na vyjimce „Row not found“

Bug nebo muj problem v aplikaci?

Editoval ali (18. 3. 2014 22:04)

H0w4rd
Člen | 82
+
0
-

Moc dekuji za tento datagrid, je fakt moc skvely! Udelal jsem s nim vse, co jsem potreboval a to reseni pres callbacky a definici custom obsahu bunek v .latte super reseni.

Jedna drobna vec – musel jsem opravit lokalizaci ‚Filter‘ a ‚Cancel‘ jednoduse:

$form['filter']->addSubmit('filter', $this->translate('Filter'));
$form['filter']->addSubmit('cancel', $this->translate('Cancel'));
thorewi
Člen | 84
+
0
-

Mam stejny problem, jako mel ali – pokud nemam aktivni libovolny filtr (tzn aktivne nefiltruju nejaky sloupec), nefunguje mi radkova editace (uplne stejna chyba jak u aliho – Component with name ‚edit‘ does not exist.).

EDIT:

Problem vidim v line 313–315:

if (!$this->filterDataSource && $this->filterFormFactory) {
	$this->filterDataSource = $this->filterFormFilter($this['form']['filter']->getValues(TRUE));
}

nebot timto se zavola createComponentForm drive nez handleEdit nastavi $this->editRowKey a tim padem se nasledujici podminka nesplni (line 409):

if ($this->editFormFactory && ($this->editRowKey || !empty($_POST['edit']))) {

Editoval thorewi (22. 4. 2014 1:30)