我正在努力为我的GWT 2.4 DataGrid设计风格,并在每一个回合都遇到障碍.我已将以下行样式添加到我的DataGrid:
dataTable.setRowStyles(new RowStyles
样式alertRow就是这样:
.alertEntry {
font-weight: bold;
color: #00ff00;
background-color: #ff0000;
}
更多信息:我已经制作了DataGrid.css的本地副本,并从所有样式中删除了所有“背景”元素,并且我使用它来构建ClientBundle:
public interface MyDataGridResources extends DataGrid.Resources {
public static final FmeaDataGridResources INSTANCE = GWT.create(MyDataGridResources.class);
@Override
@Source({"../resources/styling/mydatagridstyles.css"})
Style dataGridStyle();
}
我在我的DataGrid构造函数中使用了这个(MyDataGridResources.INSTANCE).
当我尝试时,符合条件的行包含绿色(#00ff00)文本,但背景颜色保持白色或灰色,具体取决于它是偶数行还是奇数行.如何忽略背景颜色的方式呢?它首先在哪里获得这些颜色?!我已经完全删除了css文件中的背景颜色信息.
最佳答案
您可以创建自定义CSS文件,并通过定义新样式资源将其提供给DataGrid.这是通过创建一个扩展DataGrid.Resources的类型来完成的,它知道你的CSS文件.然后,将其传递给datagrid的构造函数.
要提供相当完整的示例,请首先为DataGrid样式创建一个新类型. (定义这样的新类型只能在GWT中唯一标识您的样式).
public interface MyStyle extends DataGrid.Style {
}
然后,定义一个接口,该接口覆盖DataGrid.Resources中的dataGridStyle()方法存根. dataGridStyle方法应返回先前定义的MyStyle.
注意给@Source注释的两个元素 – 你可以在你提供的第二个文件中覆盖默认CSS(DataGrid.css)中的任何类名(这里是“DataGridOverride.css”).
public interface DataGridResource extends DataGrid.Resources {
@Source({ DataGrid.Style.DEFAULT_CSS,"DataGridOverride.css" })
MyStyle dataGridStyle();
};
要构建新样式的数据网格,您需要做的就是:
DataGridResource resource = GWT.create(DataGridResource.class);
dataGrid = new DataGrid
一个微妙之处在于,当您增加被覆盖样式的优先级时,您可能需要覆盖任何其他需要更高优先级的样式,例如行悬停规则需要在行样式规则之后.