Сразу оговорюсь, что с помощью строкового фильтра (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"); } } } } |
Если вы руками сотрете установленное значение в фильтре, то увидите полный список в гриде.