SmartGWT: is it possible to color a a certain row in a list grid?

六眼飞鱼酱① 提交于 2019-12-01 21:15:57

In SmartGWT, methods that end with Style (e.g.- getStyle, getBaseStyle, getCellStyle, etc.) need to return a CSS class defined elsewhere (.css file, inline css in application load jsp, etc.).
Same applies for set
Style methods.

Unless lot of CSS customizations are done warranting the need for such, using getCellCSSText would probably be the best option.

getCellCSSText returns CSS text per cell, and will be called during every redraw.

final ListGrid resultsGrid = new ListGrid() {
    @Override
    protected String getCellCSSText(ListGridRecord record, int rowNum, int colNum) {
        String style = super.getCellCSSText(record, rowNum, colNum);

        // conditions can check values in record using rowNum, colNum as well as record attributes
        if (record.getAttribute("<grid-field-name>").equals(<value>)) {
            if (this.getFieldName(colNum).equals("<certain-grid-field-name>") && record.getAttribute("<grid-field-name>").equals(<specific-value>)) {
                style = "font-weight:bold"; // only that cell in that row becomes bold
            } else {
                style = "color:red"; // all other cells in that row become red
            }
        } else if (record.getAttribute("<other-grid-field-name>").equals(<value>)) {
            style = "color:green"; // entire row changed to green if one column in this row contain a specific value
        }

        return style;
    }
};

Its not required to extend ListGridRecord as indicated in showcase sample linked above, unless there are other reasons to do so.

Never used SmartGWT, but looking at the JavaDoc, I'd say:

listGrid.getRecord(recordNum)

Also checkout this sample, that overrides the getBaseStyle() of the ListGrid.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!