Как добавить CSS в выбранную строку в сетке дерева GXT 3

Я создал древовидную сетку, используя GXT 3. теперь, чтобы изменить цвет фона выбранной строки, а также я хочу изменить фон корневого узла (строка листьев, т.е. родительская строка).

Я использую GXT 3.0 и Eclipse 3.7

заранее спасибо

Ответы на вопрос(3)

Решение Вопроса

У меня тоже была такая же проблема, я хотел покрасить фон строки в зависимости от некоторых условий. В итоге я нашел решение:

Вам нужно создатьGridViewConfig и переопределитьgetColumnStyle способ вернуть цвет хочу, мне потребовалось некоторое время, чтобы выяснить, но переопределивgetRowStyle Метод не работает, по крайней мере, не для меня.

grid.getView().setViewConfig(new GridViewConfig<Model>() {

    @Override
    public String getColStyle(  Model model, 
                                ValueProvider<? super Model, ?> valueProvider,
                                int rowIndex, int colIndex)
    {
        if ("Other2".equals(model.getName())){
            return "bold";
        }else if ("Other".equals(model.getName())){
            return "red-row";
        }
        return null;
    }

    @Override
    public String getRowStyle(Model model, int rowIndex) {
        return null;
    }
});

Примечание. Измените файл CSS соответствующим образом.

 30 апр. 2013 г., 20:56
Спасибо! Это сработало для меня за моим столом.
 15 сент. 2015 г., 17:44
У меня была такая же проблема, и я попробовал этот подход. Не работает. Я вижу, что указанный класс CSS (красная строка в этом примере) применяется к элементу TR, но к отдельным элементам td визуализированной сетки применяются свои собственные классы, настройки которых переопределяют параметры указанного класса. Не уверен, как справиться с этим.

Я обнаружил, что вы также можете настроить CSS следующим образом:

grid.getCellFormatter().addStyleName(0, colNo - 1, MC_GWT.MC_STYLE_VERTICAL_ICON_HOLDER);

Это немного проще, я думаю :) Особенно, когда вы хотите стилизовать, например выравнивание значков внутри него. В моем случае мне нужно было отображать значки в вертикальном ряду. Поэтому мне нужно было изменить отображение ячеек на «блок»;

Я думаю, что то же самое с GXT 2.x

Просто добавьте свой собственный CellRenderer в ваш ColumnConfig:

List<ColumnConfig> columns = new ArrayList<ColumnConfig>();
ColumnConfig levelColumnConfig = new ColumnConfig("level", "Level", 50);
levelColumnConfig.setRenderer(getGridCellRenderer());
columns.add(levelColumnConfig);
ColumnModel cm = new ColumnModel(columns);



private GridCellRenderer<BeanModel> getGridCellRenderer() {
        if (gridCellRenderer == null) {
            gridCellRenderer = new GridCellRenderer<BeanModel>() {
                @Override
                public Object render(BeanModel model, String property, ColumnData config, int rowIndex, int colIndex,
                    ListStore<BeanModel> store, Grid<BeanModel> grid) {

                    //add some logic for example

                    String color = "#000000";
                    MyBean mybean = (MyBean) model.getBean();
                    switch (mybean.getLevel()) {
                    case TRACE:
                        color = "#f0f0f0";
                        break;
                    default:
                        color = "#000000";
                    }

                    // add some background-color

                    config.style = config.style + ";background-color:" + color + ";";
                    Object value = model.get(property);
                    return value;
                }
            };
        }
        return gridCellRenderer;
    }
 20 нояб. 2012 г., 17:57
GridCellRenderer ушел из 3.x, вместо этого используйте GWTCell а такжеAbstractCell классы - это позволяет вам не только отображать элементы, но и принимать события.

Ваш ответ на вопрос