2012-01-12 57 views
2

中的一个单元格将整个网格行着色。 。 我根据单元格的值着色一列,但我想在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

在每一个渲染方法,你有模型参数之一,所以要尽量设置相同的渲染器的列,但是取代“财产”以属性的名称持有字符串类型的项目。让我们假设你把它称为“ITEMNAME”,因此您的代码更改为:

model.get("itemName"); 

也许铸造将是必需的,因为model.get()应返回的对象。

现在在每一列中都会执行相同的检查,并且所有检查都应该使用同一种颜色。 如果可行,下一步可能会进行一些优化:如果第一次检查返回某种颜色,请将其设置为模型到颜色的哈希表(或直接作为新属性添加到模型中),并在渲染器中添加一个条件检查颜色是否已分配。

+0

谢谢Denu。 。 。非常感谢它的工作。我宣布风格作为全局变量,并在第一列中调用方法,然后风格值(背景颜色)是在字符串(风格),然后我创建了一个新的方法,并给'config.style = style'。 。 ..。 – Amith 2012-01-21 05:01:11

+0

我很高兴你能使它运行。如果您将我的答案标记为“已接受”,我将不胜感激 - 当然,如果您认为我已经带领您朝着正确的方向发展): – denu 2012-03-19 07:10:51

7

鉴于您正在使用GXT> 2.x.x,正确的方法是将新的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

+1

这应该是被接受的答案 – 2013-08-21 22:52:31

+0

不幸的是,这种方法不适用于动态生成的背景颜色,但只适用于预定义的类。 – Sebastian 2016-05-19 10:44:03