2016-02-04 3 views
0

Я пытаюсь отключить флажок в определенной строке на основе некоторого свойства его Bean (или просто сделать всю строку вообще невыбираемой), но я не могу увидеть какой-либо метод или свойство, которое я мог бы использовать для получения дескриптора флажков с левой стороны, добавленных при использовании многоэкранной модели или чего-то такого же широкого, как отключение всей строки. Любые мысли о том, как это может быть достигнуто, или где я должен искать?Как я могу сделать определенную строку неотделимой в сетке Vaadin с помощью модели с несколькими выборами?

ответ

2

Вы можете использовать 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(), вы должны отфильтровать их вручную (используя некоторое свойство «неконтролируемого», как показано выше).

+0

Спасибо @jqrsd, это похоже на то, что мне нужно! – AdamD

0

Невозможно отключить флажок в определенной строке.

Одним из решений является использование созданного столбца и/или настраиваемого средства визуализации.

0

Если вы используете twitter bootstrap в качестве своей гибкой структуры, вы сможете найти эту строку и дать ей класс «.inactive», и если это не сработает, вы всегда можете установить его, позиционированный ящик с высотой и шириной 100% внутри этой строки и z-index его по меньшей мере до 250. Это должно сделать все в этой строке без клика!

 Смежные вопросы

  • Нет связанных вопросов^_^