Wygląda na to, że powinno być tak proste, ale po prostu nie mogę tego zrobić (nie potrzebuję nawet tego robić dynamicznie). Na przykład załóżmy, że mam prosty 2 kolumna konfiguracja sieci tak:Jak zastosować kolor tła (lub niestandardową klasę css) do kolumny w siatce - ExtJs 4?
columns : [
{header: 'USER', dataIndex: 'firstName', width:70, cls: 'red'},
{header: 'CATEGORY', dataIndex: 'category', width:100}
]
Atrybut cls: 'red'
wpływa tylko nagłówek i nie rzeczywista kolumny. Widziałem gdzie indziej, że należy przy użyciu niestandardowego mechanizmu renderującego (być może), ale gdy próbuję coś takiego:
{header: 'USER', dataIndex: 'firstName', width:70,
renderer: function(value) {
this.addCls('red');
return value;
}
}
I jeszcze dostać nudne białe tło. Widziałem również ludzi używających definicji funkcji renderera, jak: function(value, metadata, record, rowIndex, colIndex, store)
, ale kiedy użyłem alert()
do przetestowania parametrów wejściowych, otrzymuję undefined
dla wszystkiego z wyjątkiem value
, co pozwala mi sądzić, że może to było ważne tylko dla wersji przed ExtJs 4.
Próbowałem również zwrócić coś w rodzaju '<span class="red">' + value + '</span>'
w mojej funkcji renderowania, ale to tylko podświetliło tekst, a nie zmieniło całe tło kolumny.
Nie chcę przesłonić domyślnych klas Ext css, ponieważ chcę zastosować kolory tła do określonej siatki w aplikacji, a nie wszystkich z nich.
Ponadto wszystkie kolumny danej siatki mogą mieć różne kolory (zwróć uwagę, że w przykładzie dodałem tylko tę klasę do pierwszej kolumny).
Załóżmy, że red
jest zdefiniowany jako .red {background:#FF0000;}
w moim pliku css.
Działa to dobrze w przypadku ExtJS 4. – cjauvin