我正在尝试根据其 Bean 的某些属性禁用特定行上的复选框(或者只是使整行通常无法选择),但我真的看不到任何可以用来获取句柄的方法或属性当使用多选模型或禁用整行时添加左侧的复选框。关于如何实现这一目标或我应该在哪里寻找的任何想法?
问问题
2671 次
3 回答
5
您可以使用 CSS 隐藏不可检查的行。首先使用setRowStyleGenerator
:
grid.setRowStyleGenerator(row -> {
boolean uncheckable = (Boolean)
row.getItem().getItemProperty("uncheckable").getValue();
return uncheckable ? "uncheckable-row" : "";
});
然后更改 .scss 中的样式,它们应该类似于:
.v-grid-row.uncheckable-row td {
background: #b1b9d6 none repeat scroll 0 0;
}
.v-grid-row.uncheckable-row td:first-child {
visibility: hidden;
}
.v-grid-row.uncheckable-row.v-grid-row-selected > .v-grid-cell {
background-image: none;
border-color: #d4d4d4;
color: inherit;
text-shadow: inherit;
}
在这里,我用复选框隐藏了整个单元格(如果隐藏td
自身的内容,用户仍然可以选择该行),为这些行使用不同的颜色,并防止它们在“全选”复选框处于活动状态时被突出显示。当然,进一步的样式是可用的。由于我们只对用户隐藏它们,它们仍然可以被选择grid.select()
并位于grid.getSelectedRows()
集合中,您应该手动过滤它们(通过使用一些“不可检查”属性,如上所示)。
于 2016-06-20T13:13:35.393 回答
0
无法禁用特定行上的复选框。
一种解决方案是使用生成的列和/或自定义渲染器。
于 2016-02-04T10:46:07.740 回答
0
如果您使用 twitter bootstrap 作为响应式框架,您应该能够找到该行并给它一个“.inactive”类,如果这不起作用,您可以随时安装它,但放置和绝对定位框该行内的高度和宽度为 100%,并且 z-index 至少为 250。这应该使该行中的所有内容都不可点击!
于 2016-06-20T16:38:24.950 回答