我有一个带有多选选项的网格。\n通常,当我单击复选框时,会使用默认选定的颜色选择行。\n但是当我单击网格时,我需要具有相同或其他选定的颜色\xc2\xb4s 行。
\n我创建了一个CSS:
\n:host(#grdPeriodicos) td.selected{\n background-color: #BDBDBD;\n color: #242140;\n font-weight: bold;\n}\nRun Code Online (Sandbox Code Playgroud)\n将其导入到我的类视图中:
\n@CssImport(value = "./styles/grid-styles.css", themeFor = "vaadin-grid")\npublic class PeriodicoListaView extends VerticalLayout implements Serializable {\n...\n\ngrdPeriodicos.setId("grdPeriodicos");\ngrdPeriodicos.addColumn(periodico -> periodico.getId_Nota()).setHeader("Nota");\ngrdPeriodicos.addColumn(periodico -> periodico.getId_NotaItem()).setHeader("Nota item"); \ngrdPeriodicos.setSelectionMode(SelectionMode.MULTI);\n\ngrdPeriodicos.setClassNameGenerator( p -> {\n return ((periodicoDTO != null) && (periodicoDTO.getId_NotaItem().equals(p.getId_NotaItem()))) ? "selected" : null; \n});\n\n\ngrdPeriodicos.addItemClickListener(e -> {\n\n if(e.getItem() != null) {\n carregaEPreencheDetalhesPeriodico(e.getItem()); \n }\n });\n\nRun Code Online (Sandbox Code Playgroud)\n加载网格时上面的代码有效,但是单击该行时没有任何反应。\n我可以在 addItemClickListener 中放入什么来再次触发 setClassNameGenerator?
\n或者我该怎么做才能在单击该行时选择该行?
\n在多选模式下,单击复选框时会选择该项目,但单击行中的任意位置时不会选择该项目。如果您想选择该项目来响应行单击,您可以执行以下操作:
grdPeriodicos.addItemClickListener(e -> {
grid.asMultiSelect().select(e.getItem());
});
Run Code Online (Sandbox Code Playgroud)
或者,如果您想更新行样式而不选择该项目,则需要调用refreshItem(这将导致对该行再次评估 ClassNameGenerator)
grdPeriodicos.addItemClickListener(e -> {
if(e.getItem() != null) {
carregaEPreencheDetalhesPeriodico(e.getItem());
grid.getDataProvider().refreshItem(e.getItem());
}
});
Run Code Online (Sandbox Code Playgroud)
Vaadin's Cookbook中有一个使用类似方法的现场演示。
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |