CGridView

Hola a todos,

Tengo un cgridview y uno de los campos establece si éste registro está activo o no; es un campo char(1) que solo puede tener los valores "1" (activo) y "0" (no activo), en el gridview aparecen tal cual los valores cero o uno, con el fin de que se mostrara un "Si" para activo y un "No" para no activo puse el siguiente codigo al cgridview:

‘columns’=>array(

array(

	'name' => 'activo',


	'value' => ($data->activo=="1")?"Si":"No",


),

)

cuando en la bd tengo un uno me pone "No" y si en value quito la condicion y solo dejo $data->activo, me imprime "1"; hice algo similar en Clistview y ahi si funciona, alguien me puede decir porque esto no funciona para el cgridview ?? y aprovechando les hago una pregunta mas ¿cómo se debería hacer cuando muchos de los campos que deben aparecer en el grid son ids de otras tablas (como ids de catalogos)?, ¿se debe poner un criteria con una consulta que los traiga? porque supongo que es incorrecto mandar llamar desde la vista una funcion del controlador o modelo para que traiga la descripcion de la tabla a la que pertenece el id actual del grid… es la primera interaccion con cgridview, disculpen si las preguntas son muy basicas…

Salu2 y GRACIAS!!

Hola de nuevo, ya logré que se mostrara el "si" cuando $model->activo es igual a uno el problema era que le faltaba unas comillas quedó asi:

columns’=>array(

array(

‘name’ => ‘activo’,

‘value’ => ‘($data->activo==“1”)?“Si”:“No”’, //<---- aki van unas comillas simples

),

)

Pero aun si alguien sabe como se maneja lo de los ids que le comentaba anteriormente, favor de comentar… gracias

Bueno… para proximas referencias… las columnas tienen un tipo… y para tu caso podrias crear una columna tipo boolean…

Ahora para acceder al atributo de otro modelo… que tiene relacion con el que estas consultando solamente tienes que ligarlos con un punto… por ej.

‘name’ => ‘Modelo.Relacion.atributo’,

Espero haberme explicado…