2012-06-18 19 views
9

W Yii CGridView ma własny kolor tła w wierszu. Ale chcę zaznaczyć konkretny wiersz na podstawie wartości jednej z kolumn.Zmiana koloru wiersza na podstawie wartości kolumny w CGridView

Dla przykładu mam trzy kolumny, identyfikator, nazwę, status. Teraz, jeśli wartość statusu jest nieaktywna lub 0, powinienem podświetlić wiersz z pewnym kolorem.

Przeczytałem krótko odnośnik do klasy i przeszukałem tę stronę. Ale nie udało się znaleźć odpowiedniego rozwiązania. Jeśli przykład lub jakiś kierunek w kierunku odpowiedniego rozwiązania, byłoby to bardzo cenne.

Dzięki, Ujjwal

Odpowiedz

20

CGridView 'rowCssClassExpression' to sposób na uzyskanie tego, co chcesz.

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider, 
    'rowCssClassExpression'=>'($data->myFlag==0)?"normal":"especial"', 
    'columns'=>array(
    ... 
    ), 
)); 

Można również wywołać niestandardową funkcję php i przekazać do niej zmienną $ data. Ta funkcja powinna zwrócić nazwę klasy dla danego wiersza :)

+0

Dzięki, działa !! –

+0

@UjjwalPrajapati nie ma za co :) – sucotronic

+0

Byłem curs ing yii/zii, podczas gdy ja googlowałem do tego. Przepraszamy za "od razu!" komentarz, ale jestem szczególnie wdzięczny za łatwą naprawę. – tedders

1

Zastosowanie rowCssClass i rowCssClassExpression dla swojej funkcjonalności. Nie przetestowałem tego kodu, ale sztuczka, której możesz użyć, aby uzyskać rozwiązanie.

$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider'=>$dataProvider, 
    'rowCssClass'=>array('odd','even'), 
    'rowCssClassExpression'=>($data->status==0)?even:odd, 
    'columns'=>array(
    ), 
)); 
+0

'rowCssClass' i 'rowCssClassExpression' są [wzajemnie wykluczające się] (http://code.google.com/p/yii/source/browse/tags/1.1 .10/framework/zii/widgets/grid/CGridView.php # 505) :( – sucotronic

+0

A także, podczas gdy ja próbuję użyć wartości rowCssClassExpression bez cudzysłowów, to nie działa.Ten warunek jest zawsze fałszywy.Tak więc, sucotronic ma rację ! –

+0

Powiedziałem, że nie przetestowałem tego kodu, ale sztuczka zadziała. –

Powiązane problemy