2014-04-23 53 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

其实,有一个更简单的解决方案。看到我的答案。 –

相关问题