1

所以我对如何在我的 Datagrid 中设置单个行的 css 有点困惑(据我所知,它可以使用 cellTable 可以使用的所有内容)。

首先,我有一个双击和单击处理程序,它们在“onCellPreview”中被正确调用(必须删除 selectionModel 才能工作)。然后我可以通过 event.getIndex() 获取行号。

接下来是我尝试为所选行设置 CSS 失败的地方,我的代码:

int Row= event.getIndex();

myDataTable.setRowStyles(new RowStyles<String[]>(){
   @Override
   public String getStyleNames(String [] rowObject, int theRow){
      if (row== theRow){
          return "myDataGridSelectedRow";
      }
      else 
          return "myDataGrid";
   }
});

但是我不明白这应该如何工作(这也许就是我无法让它工作的原因)

  1. getStyleNames() 是如何被调用的?它只是在我的调试器中跳过它。
  2. setRowStyles 方法调用应该位于我的代码中的什么位置?
  3. 我想要让它正常工作,我必须删除呼叫

     myDataTable.setStyleName("myDataGrid");
    
  4. 我的 DataGridOverride.css 中还有一个预先存在的 css 类(与“myDataGrid”所在的主 css 文件不同)。该类是“.dataGridSelectedRowCell”并具有背景颜色集(使用!important),但它不起作用。
4

1 回答 1

2

setRowStyles()仅在呈现表时调用此方法。

您可以通过这种方式动态设置样式:

myDataTable.getRowElement(i).getStyle()...

或者

myDataTable.getRowElement(i).setClassName("myDataGridSelectedRow");

您不需要从网格中删除样式名称。

编辑:

另一种方法是覆盖标准 DataGrid CSS 资源:

如何设置 gwt 2.1 CellTables 标题的样式?

如果您想对默认 GWT DataGrid 样式进行许多更改,我会推荐这种方法。

于 2014-03-20T19:23:58.703 回答