Ublaboo/Datagrid – item detail nebo treeview

lukyn
Člen | 20
+
0
-

Ahoj,
mám hlavní grid, ve kterém si nechávám načítat hlavičky faktur. Tohle mi frčí v pohodě.
Potřeboval bych ale nechat zobrazit ke konkrétní faktuře její položky:
a

  • přes Action tlačítko → item detailu vytvořit další vnořený grid s danými položkami – jde to?

a nebo

  • přes Treeview nechat zobrazit položky faktur

Položky faktury ale mají jiný sloupce než jsou sloupce pro hlavičky faktur.

Nasměrujte mne, jak na to, díky …

Pavel Janda
Člen | 977
+
+1
-

@lukyn Sice obě volby budou asi nějakým způsobem fungovat a zní sexy, já osobně bych se ale vydal spíš nějakou jednodušší cestou – tak nějak jsem se naučil, že čím jednodušší cesta, tím potenciálních budoucích errorů se vyskytne.. Takže! Být tebou udělám normálně další grid faktur v nové záložce nebo modalu.

Ale pokud nevidíš do budoucna žádný prostor pro rozšiřování, zkusil bych item detail, dělám to tak občas taky. Treeview bych se vyhnul, je s tím o dost víc práce.

lukyn
Člen | 20
+
0
-

Marně si hlavu lámu, jak provést v item detailu vnořený další grid… Nevíte někdo, jaké je řešení ?

lookass
Člen | 54
+
0
-

@lukyn
Myslím, že to nepůjde. Řešením by by mohl být iframe.

lukyn
Člen | 20
+
0
-

@lookass
Mohl by jsi mi naťuknout kousek kódu, jak to myslíš v iframe ? Netuším, jak na to…

Díky
Lukáš

lookass
Člen | 54
+
0
-

lukyn napsal(a):

@lookass
Mohl by jsi mi naťuknout kousek kódu, jak to myslíš v iframe ? Netuším, jak na to…

Díky
Lukáš

Myslím html tag iframe , kde bude v src odkaz na stránku, kde bude ten další grid.

Nevím ale, zdali se s novými verzemi něco nezměnilo a není to možné i jinak.

lookass
Člen | 54
+
0
-

Po delší opět jsem opět na toto téma narazil a funguje mi toto řešení:

Komponenta s gridem:

protected function createComponentQuestionList(): DataGrid
{
	$grid = $this->dataGridFactory->create();

	$grid->addComponent($this->itemDetailGridFactory->create(), 'detailGrid');
	$grid->setItemsDetail(__DIR__ . '/templates/gridActionDetail.latte');

	return $grid;
}

gridActionDetail.latte
{control detailGrid $item->getId()}

komponenta s vnořeným gridem:

public function render(int $id): void
{
	$this->id = $id;
	$this['grid']->setDataSource($this->model->getDataById($id));
	$this->template->id = $id;
	$this->template->setFile(__DIR__ . '/templates/default.latte');
	$this->template->render();
}

protected function createComponentGrid(): DataGrid
{
	$grid = $this->dataGridFactory->create();

	$grid->addColumnNumber('id', 'ID');
	$grid->addColumnText('name', 'Name');

	return $grid;
}