GXT -краска всей строки сетки по одной ячейке в строке - PullRequest
3 голосов
/ 12 января 2012

. , Я покрасил один столбец в соответствии со значением ячейки, но я хочу покрасить всю строку (означает, что ячейка содержала строку) в сетке 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 ]

8 голосов
/ 03 мая 2012

Учитывая, что вы используете 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

2 голосов
/ 13 января 2012

В каждом методе рендеринга вы получаете модель в качестве одного из параметров, поэтому попробуйте установить один и тот же рендерер для каждого столбца, но замените 'property' на имя атрибута, который содержит строку с типом элемента. Предположим, вы назвали его itemName, поэтому измените код на:

model.get("itemName");  

Возможно, потребуется приведение, потому что model.get () должна вернуть Object.

Теперь в каждом столбце будет выполняться одна и та же проверка, и все они должны быть одного цвета. Если это сработает, следующим шагом может быть некоторая оптимизация: если первая проверка возвращает какой-либо цвет, установите его в hashmap модель-цвет (или в модель непосредственно как новый атрибут) и добавьте в средство визуализации условие, которое будет проверять если цвет еще не был назначен.

...