我怎么能得到一个ListGridRecord的画布组件



我用的是smartgwt 2.4.

我正在尝试设计一个ListGridRecord。我想获得它的Canvas组件,但我找不到任何引用。

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

我知道在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);
        }
    }
};

最新更新