Datagrid akce, vytvoření odkazu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ufik
Člen | 14
+
0
-

Zdravím, potřeboval bych vytvořit odkaz v datagridu, kde si předám ještě parametr s ID, ale vůbec netušim jak toho dosáhnout.

$grid->addAction('Nový', 'AdminNews:addNews', Html::el('span')->class('icon icon-new'), $useAjax = FALSE, $type = DataGridAction::WITHOUT_KEY);

AdminNews:addNews a zde potřebuji ještě předat ID.

Děkuji za každou odpověď.

bazo
Člen | 620
+
0
-

a keby si tak zrusil to WITHOUT_KEY?

ufik
Člen | 14
+
0
-

Tím ID nemyslím primární klíč, ale id stránky na které se nacházím, takže to withoutkey nevyřeší problém.

despiq
Člen | 320
+
0
-

jake id? to mas vice stranek s vice datagridama, nebo se ti jedna o stranky v datagridu?

DocX
Člen | 154
+
0
-

Vím co tím myslíš.

Tohle datagrid sám o sobě neumí (musel by si upravit funkci https://github.com/…idAction.php#L71 třeba tak aby sis do destination mohl dát pole a pak to při volání ̀control->link` nějak rozdělit, třeba index 0 jako adresu a zbytek argumenty)

Nicméně tvůj problém bys mohl nejspíš vyřešit tak, že to ID záznamu, ke kterému máš datagrid, budeš ukládát v persistent parametru. Samozřejmě tenhle persistent parametr budeš muset mít i na presenteru který akcí voláš, takže to pořešit přes nějaké zdědění ;)

ufik
Člen | 14
+
0
-

Jo to zní dobře, vyzkouším to a dám vědět jak to dopadlo =) díky

Lopo
Člen | 277
+
0
-

a co tak vyuzit onActionRender ?
napr:

createComponentGridList() {
$grid->addActionColumn('Akcie');
$grid->addAction('edit', 'this');
$grid->getRenderer()->onActionRender[]=array($this, 'gridListOnCellRendered');
}

public function gridListOnCellRendered(Html $cell, $column)
{
	if ($cell->title=='edit') {
		$cell->id=$column['id'];
		$cell->href=NULL;
		$cell->addClass('update-item icon icon-edit');
$cell->onClick="$('#dialog-form').dialog('option', 'dlgvals', { id: ".$column['id'].", kanal: '".$column['name']."'}); $('#dialog-form').dialog('option', 'nop', 'update'); $('#dialog-form').dialog('open');";
		$cell->style="cursor: pointer";
		}
	return $cell;
}

je to kus kodu z real aplikacie pouzivajucej jQueryUI Dialog, tj uprav si to podla potreby – hlavne asi href a onclick