如何获取ListGridRecord的Canvas组件?

时间:2011-08-02 14:13:13

标签: java list grid record smartgwt

我使用smartgwt 2.4。

我正试图设计一个ListGridRecord。我想获得它的Canvas组件,但我无法在任何地方找到引用。

我知道ListGrid中的方法有createRecordComponentgetBackgroundComponent等,但这些方法不会返回任何组件。它们被视为覆盖点(用户可以定义他/她自己的组件而不是默认组件)。但这不是我想要的。我想获取默认组件并更改它(样式)。

我知道在setCellFormatter有一个ListGrid方法,我可以在其中设置单元格的格式,但它只考虑单元格的文本组件,而不是整行(记录)。< / p>

我知道有一个getBaseStyle方法,我可以放一个类名,但这仍然不是我想要的。我想动态更改样式(例如,我想将任何背景颜色添加到组件中),而不仅仅是放置一个静态类(预定义背景颜色)。

有人可以帮忙吗? 感谢。

1 个答案:

答案 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);
        }
    }
};