2014-04-23 86 views
0

Im爲DataGrid設置自定義CssResource。如何將特定樣式添加到選定行中的列DataGrid GWT

表中的第一列是具有特定樣式的有序列。 所以當選擇行時,我需要爲訂單欄設置另一個特定樣式。

類似的東西:

enter image description here

+0

我嘗試.class.class方法'.dataGridKeyboardSelectedRowCell.specificStyle { 背景顏色:#444444重要; }'但不起作用 – formatqs

回答

1

您可以覆蓋.getCellStyleNames方法爲您列:

Column<Object, String> numberColumn = new Column<Object, String>(new TextCell()) { 

    @Override 
    public String getCellStyleNames(Context context, Object object) { 

    if (selectionModel.isSelected(object)) { 
     return "boldStyle"; 
    } 
}; 
+0

工作很漂亮。謝謝,但不適用於'NoSelectionModel'。 – formatqs

+0

你在你的問題中提到「何時選中一行」。無論您決定是否選擇一行,都無關緊要 - 將selectionModel.isSelected()替換爲您使用的任何內容。 –

0

嘗試用AbstractHasData#addCellPreviewHandler()

dataGrid.addCellPreviewHandler(new Handler<T>() { 

    @Override 
    public void onCellPreview(CellPreviewEvent<T> event) { 
     if ("click".equals(event.getNativeEvent().getType())) { 
      table.getRowElement(event.getIndex()).getCells().getItem(0).getStyle() 
        .setBackgroundColor("#444444"); 
     } 
    } 

}); 

注意:此代碼適用於SingleSelectionModel。如果你需要MultiSelectionModel,那麼對所有選定的行都做同樣的事情。

+0

如果您有選擇模型,則可以簡單地添加一個SelectionChangeHandler。 –

+0

@AndreiVolgin如何讓'SelectionChangeHandler'中的'TableCellElement'改變風格? – Braj

+0

其實,有一個更簡單的解決方案。看到我的答案。 –

相關問題