Как я могу получить компонент Canvas для ListGridRecord?

Я использую смартгвт 2.4.

Я пытаюсь оформить ListGridRecord. Я хочу получить компонент Canvas, но нигде не могу найти ссылку.

Я знаю, что в ListGrid есть методы как createRecordComponent или getBackgroundComponent и т. д., но они не возвращают никаких компонентов. Они предназначены для переопределения (пользователь может определить свои собственные компоненты вместо компонентов по умолчанию). Но это не то, чего я хочу. Я хочу получить компонент по умолчанию и изменить его (стиль).

Я знаю, что в ListGrid есть метод setCellFormatter, где я могу установить формат ячейки, но он касается только текстового компонента ячейки, а не всей строки (записи).

Я знаю, что есть метод getBaseStyle, где я могу поместить имя класса, но это все еще не то, что мне нужно. Я хочу динамически изменить стиль (например, я хочу поместить любой цвет фона в компонент), а не только поместить статический класс (ы) (где цвет фона предопределен).

Кто-нибудь может помочь? Спасибо.


person xMichal    schedule 02.08.2011    source источник


Ответы (1)


Боюсь, ваши возможности немного ограничены, когда дело доходит до 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);
        }
    }
};
person Kimi    schedule 07.08.2011