Я пытаюсь отключить флажок в определенной строке на основе некоторого свойства его Bean (или просто сделать всю строку вообще невыбираемой), но я не могу увидеть какой-либо метод или свойство, которое я мог бы использовать для получения дескриптора флажков с левой стороны, добавленных при использовании многоэкранной модели или чего-то такого же широкого, как отключение всей строки. Любые мысли о том, как это может быть достигнуто, или где я должен искать?Как я могу сделать определенную строку неотделимой в сетке Vaadin с помощью модели с несколькими выборами?
ответ
Вы можете использовать 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()
, вы должны отфильтровать их вручную (используя некоторое свойство «неконтролируемого», как показано выше).
Невозможно отключить флажок в определенной строке.
Одним из решений является использование созданного столбца и/или настраиваемого средства визуализации.
Если вы используете twitter bootstrap в качестве своей гибкой структуры, вы сможете найти эту строку и дать ей класс «.inactive», и если это не сработает, вы всегда можете установить его, позиционированный ящик с высотой и шириной 100% внутри этой строки и z-index его по меньшей мере до 250. Это должно сделать все в этой строке без клика!
Спасибо @jqrsd, это похоже на то, что мне нужно! – AdamD