Ublaboo/Datagrid – item detail nebo treeview
- lukyn
- Člen | 20
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
@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.
- lookass
- Člen | 54
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
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;
}