我用的是smartgwt 2.4.
我正在尝试设计一个ListGridRecord
。我想获得它的Canvas组件,但我找不到任何引用。
我知道ListGrid
中有createRecordComponent
或getBackgroundComponent
等方法,但这些不返回任何组件。它们意味着一个覆盖点(用户可以定义他/她自己的组件,而不是默认的)。但这不是我想要的。我想获得默认组件并更改它(样式)。
我知道在ListGrid
有一个setCellFormatter
方法,在那里我可以设置单元格的格式,但它只考虑单元格的文本组件,而不是整行(记录)。
我知道有一个getBaseStyle
方法,在那里我可以放一个类名,但这仍然不是我想要的。我想动态地改变样式(例如,我想给组件添加任何背景色),而不仅仅是添加一个静态类(其中背景色是预定义的)。
有人能帮忙吗?谢谢。
当涉及到SmartGWT时,恐怕您的选择有点有限。一个,虽然不是很简单的实现方法是重写listgrid。getcellcsstext (ListGridRecord记录,int rowNum, int colNum)方法创建ListGrid,如下所示。
这就是我创建自定义单元格样式的方法。
final ListGrid grid= new ListGrid() {
protected String getCellCSSText(ListGridRecord record, int rowNum, int colNum) {
if (getFieldName(colNum).equals("MyColumnName")) {
ListGridRecord record = (ListGridRecord) record;
if (record.getSomeValue() > 20) {
return "font-weight:bold; color:red;";
} else if (record.getSomethingElse() < 5) {
return "font-weight:bold; color:blue;";
} else {
return super.getCellCSSText(record, rowNum, colNum);
}
} else {
return super.getCellCSSText(record, rowNum, colNum);
}
}
};