Prepínanie usporiadania tabulky, po kliknutí na hlavičku tabulky?

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

Ahoj potrebujem poradit, ako spravit aby ked mam tabulku s vypisom uživatelov a kliknem na uživatelské meno v hlavicke tabulky prvy krát zoradí mi to podla ASC, ked kliknem druhý krát, tak podla DESC a pri tretom ráze znovu ASC.

Dakujem za rady.

CZechBoY
Člen | 3608
+
0
-

S cim konkretne si nevis rady?
Jak vytvorit signal?
Jak zmenit hodnotu parametru kdyz ma hodnotu XXX?
Jak prekreslit snippet?

Zatim ani nevime jaky kod pouzivas takze tezko radit konkretne.

yelidric
Člen | 33
+
0
-

V hlavicke tabulky pouzivam momentalne odkazy, ktore vyzeraju nejak takto

<a n:href="default order => username">Používatelské meno</a>

Čo mi pekne po kliknuti zobrazi zoradenu tabulku podla daneho stlpca ale este by som chcel pridat to co som spomenul v prvom prispevku.

CZechBoY
Člen | 3608
+
0
-

Tak pridej treba sort => desc

yelidric
Člen | 33
+
0
-

To mi je jasne len ako skrz php spravim prepinanie po tom kliknuti na rovnaky stlpec? Najrdsej by som tam dal len premennu $sort a v php-čku by som ju priradoval. Len neviem ako?!

CZechBoY
Člen | 3608
+
0
-

Dobře, už jsem na pc tak ti toho napíšu víc… :D

class MujPresenter extends UI\Presenter
{
	/**
	 * @var string
	 * @persistent
	 */
	public $order;

	/**
	 * @var string
	 * @persistent
	 */
	public $sort = 'asc';

	public function actionDefault($order, $sort = 'asc')
	{
		$this->order = (string)$order;
		$this->sort = $sort === 'desc' ? 'desc' : 'asc';
	}

	public function renderDefault()
	{
		$this->template->order = $this->order;
		$this->template->sort = $this->sort;

		$this->template->data = $this->model->getData($order, $sort);
	}
}
<a n:href="default order => username, sort => $sort !== 'asc' : 'asc' : 'desc'">Používatelské meno</a>

Editoval CZechBoY (30. 12. 2016 13:08)

yelidric
Člen | 33
+
0
-

A taka otazka. Dalo by sa to dosiahnut aj bez toho zeby v adrese vycnievalo &sort=ASC? Myslim tym, že by som len v php-ku priradil k premennej $sort bud ASC alebo DESC.

Editoval yelidric (30. 12. 2016 13:26)

CZechBoY
Člen | 3608
+
0
-

Tak buď routerem nebo můžeš mít defaultní hodnotu null, která se nepíše do url.

yelidric
Člen | 33
+
0
-

Okej, diky za rady. Idem skusat, tak sa ja najlepsie učím. (Pokus – omyl.) :D

Šaman
Člen | 2666
+
+1
-

yelidric napsal(a):

A taka otazka. Dalo by sa to dosiahnut aj bez toho zeby v adrese vycnievalo &sort=ASC? Myslim tym, že by som len v php-ku priradil k premennej $sort bud ASC alebo DESC.

Když už máš v adrese podle čeho řadit, tak se nezbavuj ani sloupce sort. Pokud uživatel někomu pošle odkaz na onu tabulku a řekne, že problém je ve třetím řádku, tak je velmi WTF, pokud se každému zobrazí jinak seřazená.
U datagridů to tohle pak týká i filtrů, nebo třeba nastavení počtu záznamů na stránku.

Šaman
Člen | 2666
+
0
-

A jen pro úplnost – většinou jsou na tohle už připravené komponenty. Já používám Grido a zkouším ublaboo/datagrid. Ale je jich víc. Tak můžeš zvážit, jestli nepoužít je.

yelidric
Člen | 33
+
0
-

@Šaman No to ponechanie v url je docela zaujimave, urcite to tam teda dam. Totižto ma nenapadlo sa takto nad tym zamyslieta mas pravdu.

Čo sa týka používania komponentov ano to je riešenie, ale keby som sa na všetko takto pozeral už si možem dat rovno WordPress ci Drupal a stranku si vyskladat a to mna nebavi. Mna bavi prichadzat na riesenia postupne a ziskavat tak skusenosti. Keby si videl aky som vzdy happy ked sa mi to podari spravit a rozumiem a chapem kazdemu detailu prečo som to spravil tak a ako som k tomu dospel. :) Viem mozem sa naučit aj použitím komponent ale to nie je ono navyse niekedy je ten ked tak obecne napísany, že než ho plne pochopím to je rychlejsie sam prísť na riešenie aj ked s chybami a postupne chyby ladit.

F.Vesely
Člen | 369
+
0
-

Postupny vyvoj je nejlepsi, to je pravda. Ale az budes takovouhle tabulku s razenim, vyhledavanim, strankovanim, atd. psat po ste, tak za datagrid budes rad. :)

yelidric
Člen | 33
+
0
-

@F.Vesely ked uz to budem vedet, nebudem sa branit komponentom, modulom datagridom a inym zbytocnym nazvom :D Ale ked to chcem plne pochopit, tak je to pre mna to naj.