Ublaboo datagrid tree view
- Isigarek
- Člen | 74
Ahoj, používám tuto skvělou komponentu a mám jeden problém. Sice jsem projížděl oficiální dokumentaci k TreeView ale pořád mi nefunguje, jak má a proto bych Vás chtěl poprosit o radu.
Dokumentace: https://ublaboo.org/…id/tree-view
Kód datagridu:
protected function createComponentDatagrid($name)
{
$categoryManager = new CategoryManager($this->core);
$grid = new DataGrid();
$grid->setPrimaryKey("ID");
$grid->setDataSource($this->core->getDb()->table(Category::TABLE));
$grid->setTreeView(function($childrenID){
Dumper::dump($childrenID);
},"parent");
$grid->addColumnText("name","Název");
$grid->addColumnText("description","Popis");
$grid->addColumnText("parent","Nadřazená kategorie")
->setRenderer(function($item) use ($categoryManager){
$cat = new Category($item->ID);
$cat->associate($categoryManager->get($cat));
if(!is_null($cat->getParent()->getID())){
$cat->getParent()->associate($categoryManager->get($cat->getParent()));
return $cat->getParent()->getName();
}else{
return "žádná";
}
});
$grid->addAction('delete', '', 'delete!')
->setIcon('trash')
->setTitle('Smazat')
->setClass('btn btn-xs btn-danger ajax')
->setConfirm('Do you really want to delete row %s?', 'name');
return $grid;
}
Chápu, že teď je kód nepoužitelný ale abychom se vrátili k našemu problému. Může mi někdo vysvětlit co přesně má znamenat první parametr funkce setTreeView? A krom toho jsem se dočetl tu na fóru při hledání v main tématech, že druhý parametr má řešit jestli daný řádek má podřádky nebo ne. Proto jsem tam dal jednoduše parent protože buď je tam ID sloupce nebo NULL a i když je tam null tak vždy hází pro všechny možnost otevření dalších – šipečka pro rescroll
Může mi nějaký dobrotinec jednoduše vysvětlit, jak to použít?
Btw: Občas používám i manager a třídy pro table takže i když budu mít objekt, který bude v parentu pokračovat dalším objektem a podobně tak to nefunguje
- rkor
- Člen | 62
První parametr je callback, který ti vrátí data z tabulky k příslušnému řádku (od datagridu dostaneš parent id), druhý parametr říká, zda řádek obsahuje potomky.
Jednoduchý příklad:
$grid->setTreeView([$this, 'getChildren'], 'hasChildren');
public function getChildren($parentId) {
return $this->database->table('items')->where('parentId',$parentId);
}
public function hasChildren($parentId) {
return $this->database->table('items')->where('parentId',$parentId)->count() > 0 ? true : false;
}
Editoval rkor (4. 3. 2018 21:18)
- Honza.Mottl
- Člen | 104
Taky se jsem potrapil s TreeView. DataGrid je vybornej. TreeView neni dost popsane a zda se mi malo zobecnene. Neda se pouzit funkcnost jako je sablona a InLine editing. Je to spise aplikace nad DataGridem nez soucast DataGridu.
- priklad na callback viz vyse mi pomohl, ale jeste neni uplne presny. HasChildern dostava jako parametr ActiveRow.
$grid->setTreeView(function($childrenID){
return $this->core->getDb()->table(Category::TABLE)->where("parent",$childrenID);
},
function($row){
return intval($row['hasChildren']) > 0;
});
- I po teto uprave se mi to porad nerozbalovalo. Az me napadlo zakomentovat mou vlastni sablonu a ono se to konecne rozjelo:) Takze pouzit sablonu u TreeView neni mozne…
// $grid->setTemplateFile('...');
- Ted uz se mi to rozbaluje a sbaluje. Ale je to horizontalne rozhozene. Negeneruje se html tabulka, ale je to poskladane z divu a nesedi mi to s hlavickou. Zatim jsem neprisel na to jak se to da nastylovat, aby sloupce zarezavaly.
- Prestal mi fungovat InLine editing, prislusna akce mi zmizela z DataGridu
- KristianSubweb
- Člen | 146
Ahojte, chcel by som sa opýtať či sa toto medzičasom nefixlo. Mám rovnaký problém s novým datagridom kde presne po kliknuti na rozbalenie sa mi na pozadí zavolá XHR volanie ktore vygeneruje payload krorý obsahuje štruktúru html no to je všetko.