GXT -краска всей строки сетки по одной ячейке в строке
,, Я покрасил один столбец в соответствии со значением ячейки, но я хочу покрасить всю строку (означает, что ячейка содержала строку) в сетке gxt, помогите мне вот мой код для окрашивания ячейки (я хочу покрасить строку вместо ячейки)
/*------------Coloring Area------------*/
GridCellRenderer<BeanModelType> ColoredGrid = new GridCellRenderer<BeanModelType>() {
@Override
public Object render(BeanModelType model,
String property, ColumnData config,
int rowIndex, int colIndex,
ListStore<BeanModelType> store,
Grid<BeanModelType> grid) {
String valueOfCell = model.get(property);
String style = valueOfCell.equals("Book") ? "GREEN":
valueOfCell.equals("Ersr") ? "red":
valueOfCell.equals("Pen") ? "yellow":
valueOfCell.equals("comp") ? "blue": "";
//Config is the cell and we are setting style here
config.style ="background-color:"+style;
return valueOfCell;
}
};
System.out.println("COLORRRRR "+cleanColoredGrid.toString());
column.setRenderer(ColoredGrid);
/*-------------Coloring Area Ends-------*/
configs.add(column);
2 ответа
В каждом методе рендеринга вы получаете модель в качестве одного из параметров, поэтому попробуйте установить один и тот же рендерер для каждого столбца, но замените "property" на имя атрибута, который содержит строку с типом элемента. Предположим, вы назвали его itemName, поэтому измените код на:
model.get("itemName");
Возможно приведение будет необходимо, потому что model.get() должен вернуть Object.
Теперь в каждом столбце будет выполняться одна и та же проверка, и все они должны быть одного цвета. Если это сработает, следующим шагом может быть некоторая оптимизация: если первая проверка возвращает какой-либо цвет, установите его в hashmap модель-цвет (или в модель непосредственно как новый атрибут) и добавьте в средство визуализации условие, которое будет проверять если цвет еще не был назначен
Учитывая, что вы используете GXT > 2.xx, правильный способ сделать это - присоединить новый GridViewConfig к представлению вашей сетки.
Вы, вероятно, должны сделать что-то вроде:
grid.getView().setViewConfig(new GridViewConfig() {
@Override
public String getRowStyle(ModelData model, int rowIndex, ListStore<ModelData> ds) {
if (model != null) {
//TODO: put your conditions here
if ("YOUR_CONDITION".equals(model.get("BOOK_COLOR))) {
return "green-row";
}
}
return "";
}
});
Вы должны изменить свой CSS соответственно. (обратите внимание, что зеленая строка - это имя класса стиля CSS).
См. Это для справки: http://www.jarvana.com/jarvana/view/com/extjs/gxt/2.1.1/gxt-2.1.1-javadoc.jar!/gxt-2.1.1-javadoc/com/extjs/gxt/ui/client/widget/grid/GridViewConfig.html