Datagrid – různý počet action na každém řádku

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

Ahoj, mám výpis v datagridu a potřebuju kontrolovat jednotlivé řádky – jestli je splněna nějaká podmínka, tak zobraz action s ikonou.
Příklad: mám výpis akcí a jestli nebyl o této akci odeslán email, tak zobraz ikonu s action pro poslání emailu.
Lze tohle udělat, aby byly na jednom řádku třeba 2 actiony a na dalším 3? Nebo nějaké ekvivalentní řešení?
Díky za pomoc.

Lopo
Člen | 277
+
0
-

radikus napsal(a):

Ahoj, mám výpis v datagridu a potřebuju kontrolovat jednotlivé řádky – jestli je splněna nějaká podmínka, tak zobraz action s ikonou.
Příklad: mám výpis akcí a jestli nebyl o této akci odeslán email, tak zobraz ikonu s action pro poslání emailu.
Lze tohle udělat, aby byly na jednom řádku třeba 2 actiony a na dalším 3? Nebo nějaké ekvivalentní řešení?
Díky za pomoc.

popisem tu moje riesenie, netvrdim ze idealne

skus do tovarnicky na konci pridat

$grid->getRenderer()->onActionRender[]=array($this, 'gridOnActionRendered');

a potom nieco ako

public function treeOnActionRendered(Html $cell, $column)
	{
		if ($cell->title=='title') {
			if ($cond) {
				$cell->setHtml(Html::el('span')->class('icon icon-no-orders'));
				return $cell;
				}
			$cell->removeChildren();
			$cell->href=NULL;
			return $cell;
			}
		return $cell;
	}

popis:
pri vykreslovani akcie ‚title‘ sa rozhoduje podla $cond
ak sa splni tak nastavi akcii ikonu, resp html obsah odkazu
ak sa nesplni tak odstrani obsah a link nastavi na prazdny …
teoreticky sa to da este doplnit o $cell->setName() – ale treba to do oboch casti spracovania podmienky – pre splnenu asi setName(‚a‘) a pre nesplnenu setName(NULL) – neviem totiz preco ale ono si to pamata medzi jednotlivymi riadkami (budem sa na to musiet pozret)
mno a samozrejme ak sa nekresli akcia ‚title‘ tak sa nic nezmeni a vrati riadne $cell