2012-01-17 43 views
2

我需要爲某些DataGrid行添加新樣式,具體取決於變量。如何將特定樣式添加到GWT DataGrid

例如:

table.setRowStyles(new RowStyles<Entry>() { 
    @Override 
    public String getStyleNames(Entry entry, int rowIndex) { 
     return entry.isStyle() ? "newStyle" : null; 
    } 
}); 

「newStyle」 是全球性的css樣式。

問題是風格不適用於行,直到我將!important添加到css定義。 但與!important我失去了所有默認的DataGrid樣式,只有「newStyle」。

UPDATE: css文件

.newStyle { 
    color : lightgray; 
} 
+2

請在這裏添加你的css!使用'!important'似乎是不好的做法。請參閱[CSS中的重要含義?](http://webdesign.about.com/od/css/f/blcssfaqimportn.htm)另請參閱[gwt-theme-style-overrides-my-css-style ](http://stackoverflow.com/questions/2322779/gwt-theme-style-overrides-my-css-style)的問題。這可能會有所幫助。 – MockerTim 2012-01-17 18:26:28

回答

1

this previous question的工作方案。複製的方便:

總之延長DataGrid.Style(目標只是有一個新的 類型,你不必添加任何東西的話),讓您的 dataGridStyle重寫的方法返回自己的亞型,而比 DataGrid.Style(它會工作,因爲返回類型的協方差)

+0

我看到了這個答案,但在那種情況下,當我使用資源注入時,我需要重寫每個樣式。 – mishadoff 2012-01-17 18:33:10

+0

通過外部使用newStyle解決 – mishadoff 2012-01-19 08:50:03

1

變化newstyle的定義你的CSS文件。通常最好讓你的CSS選擇器更具體,而不是使用!important。嘗試將默認的DataGrid CSS名稱與您的名稱相結合。例如:dataGridHeader.newStyle {}