Как выбрать в гриде vaadin строчки с помощью фильтра

Сразу оговорюсь, что с помощью строкового фильтра (TextFilter), который я рассмотрю, не всегда можно подсветить несколько строк. В зависимости от параметров конструктора фильтра будет проверка на равенство строк или проверка с помощью beginsWith(). В случая, когда этих средств недостаточно, придется фильтровать коллекцию объектов как-то еще до того, как заполняется ContainerDataSource грида. Есть еще фильтры с диапазонами, фильтры с перечислением — с ними можно гарантированно отфильтровать несколько строк.

Суть в том, что можно через приведение типов (даже не пригодился Reflection API) получить доступ к полю ввода текстового фильтра и записать туда строку. Допустим, вы знаете, что вам нужно подсветить строку с ID = 12. Тогда в соответствующий фильтр надо это значение записать:

GridCellFilter filter = claimsGridWithButtons.getClaimsFilter();
if (filter != null) {
    CellFilterComponent filterComponent = filter.getCellFilter(COLUMN_ID); // COLUMN_ID = "ID" 
    if (filterComponent != null) {
        Component component = filterComponent.getComponent();
        if (component != null) {
            if (component instanceof TextField) {
                TextField textField = (TextField) component;
                textField.setValue("12");
            }
        }
    }
}

Если вы руками сотрете установленное значение в фильтре, то увидите полный список в гриде.

You can leave a response, or trackback from your own site.

Leave a Reply