2012-01-12 31 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