Filtrovanie dát v stromovej štruktúre ublaboo/datagridu?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- KristianSubweb
- Člen | 146
Ahoj chcel by som sa opýtať na výpis dát v tabulke používam stromový datagrid. Momentálne viem filtrovať dáta len na úrovni rodiča. Ale ja potrebujem filtrovať aj dáta na úrovni ich potomovkov. Neriešili ste tu niekto niečo podobné ?
Tu je zdrojak datagridu:
public function createComponentTestAnalysesGrid($name) {
$qb = $this->testSetService->getAllAsQb()
->where("ts.project = :project")
->setParameter("project", $this->project);
$grid = new DataGrid($this, $name);
// setup
$grid->setTranslator($this->translator);
$grid->setDataSource($qb);
$grid->setStrictSessionFilterValues(FALSE);
$grid->setTemplateFile($this->dirService->getBlocksDir() . "/datagridTemplate.latte");
$grid->setDefaultSort(["id" => "DESC"]);
$grid->setDefaultPerPage("all");
$grid->setColumnsHideable();
// ID is everywhere
$grid->addColumnText("id", "ID")
->setSortable();
$grid->setHeader("Test Set / Test Case");
$grid->setHugeTreeView([$this, "getChildren"], [$this, "hasChildren"]);
$grid->addColumnText("name", "is.projects.nameTestSet")
->setRenderer(function($item) {
if ($item instanceof \ProjectModule\Entities\TestSet) {
return $item->getTrProp("name");
} else {
return Html::el("a onclick='return false;' data-caseid=" . $item->getId())
->href("#")
->setText($item->getTrProp("name"))
->setClass("showCaseInModal");
}
})
->setSortable();
$grid->addColumnText("user", "is.projects.createdBy")
->setRenderer(function($item) {
return $item->getCreator()->getFullName();
});
$grid->addColumnText("approved", "is.projects.approved")
->setRenderer(function($item) {
return $item->getApprovedInStyle();
})
->setTemplateEscaping(false);
$grid->addColumnDateTime("createDate", "is.projects.createDate")
->setSortable();
$grid->addFilterText("name", "is.projects.nameTS");
$grid->addFilterDateRange("createDate", "is.projects.createDateTS");
$grid->addFilterSelect("creator", "is.projects.createdTS", Functions::insertEmptyArray($this->userService->getAllUsersInProject($this->projectID)));
$grid->addColumnText("action", "is.default.action")
->setAlign("right")
->setTemplate($this->dirService->getModulesDir().'/ProjectModule/templates/TestAnalyses/Blocks/actionDatagridAnalyses.latte', ["presenter" => $grid->getPresenter()]);
$grid->setPagination(FALSE);
return $grid;
}