我使用smartgwt 2.4。
我正试图设计一个ListGridRecord
。我想获得它的Canvas组件,但我无法在任何地方找到引用。
我知道ListGrid
中的方法有createRecordComponent
或getBackgroundComponent
等,但这些方法不会返回任何组件。它们被视为覆盖点(用户可以定义他/她自己的组件而不是默认组件)。但这不是我想要的。我想获取默认组件并更改它(样式)。
我知道在setCellFormatter
有一个ListGrid
方法,我可以在其中设置单元格的格式,但它只考虑单元格的文本组件,而不是整行(记录)。< / p>
我知道有一个getBaseStyle
方法,我可以放一个类名,但这仍然不是我想要的。我想动态更改样式(例如,我想将任何背景颜色添加到组件中),而不仅仅是放置一个静态类(预定义背景颜色)。
有人可以帮忙吗? 感谢。
答案 0 :(得分:0)
对于SmartGWT,我担心你的选择有点受限。
一个,虽然不是很简单的实现方法,但是在创建ListGrid时覆盖了ListGrid.getCellCSSText(ListGridRecord record, int rowNum, int colNum)方法,如图所示here。
这就是我创建自定义单元格样式的方法。
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);
}
}
};