CGridView

Here is my Query, which is generated by CSqlDataProvider…


( SELECT e.E_NAME AS "E_NAME", e.E_TLID AS "E_TLID", 

(SELECT E_NAME FROM employee WHERE employee.E_ID = e.E_TLID) as TLNAME,

e.E_DEPTID AS "E_DEPTID",

(SELECT D_NAME FROM department WHERE department.D_ID = e.E_DEPTID) as DPTNAME,

l.LS_FROM AS "LS_FROM", l.LS_TO AS "LS_TO", l.LS_STATUS AS "LS_STATUS",

 l.LS_DAYS AS "LS_DAYS", "L" AS "TYPE", l.LS_ID AS "LEAVEID" FROM 

employee e JOIN leave_summary l on e.E_ID = l.LS_EMPID WHERE 1=1 ) UNION 

( SELECT e.E_NAME AS "E_NAME", e.E_TLID AS "E_TLID", 

(SELECT E_NAME FROM employee WHERE employee.E_ID = e.E_TLID) as TLNAME,

e.E_DEPTID AS "E_DEPTID",

(SELECT D_NAME FROM department WHERE department.D_ID = e.E_DEPTID) as DPTNAME,

c.L_DATE AS "LS_FROM", c.L_DATE AS "LS_TO", c.STATUS AS "LS_STATUS", 

"1" AS "LS_DAYS", "C" AS "TYPE", c.C_ID AS "LEAVEID" 

FROM employee e JOIN comp_off c on e.E_ID = c.E_ID WHERE 1=1 ) 

ORDER BY DPTNAME desc LIMIT 10

Sort Array defined in model


$sort->defaultOrder = 'E_NAME';

	$sort->attributes = array(

		'E_NAME'=>array(

		  'asc'=>'E_NAME',

		  'desc'=>'E_NAME desc',

		),

		'TYPE'=>array(

		  'asc'=>'TYPE',

		  'desc'=>'TYPE desc',

		),	

	);

Code @ Gridview…


array(            // display Type

        'name'=>'Type',

	'type'=>'raw',

        'value'=>array($smodel,'getTypeName'),

),

getTypeName Function in Model…


public function getTypeName($data,$row)

{

	if ( trim($data["TYPE"]) == 'L' )

		return 'Leave';

	else if ( trim($data["TYPE"]) == 'C' )

		return 'Comp. Off.';

}

How can I make TYPE column as sortable?

try to force the property ‘sortable’ to true


array(            // display Type

        'name'=>'Type',

        'type'=>'raw',

        'value'=>array($smodel,'getTypeName'),

        'sortable'=>true

),

Thanks for the reply, but it’s not working…

Check if this is not related to case (in one place you use "Type", in other "TYPE"). Define your column in grid like this:




array(

        'name'=>'TYPE', //<- TYPE instead of Type

        'type'=>'raw',

        'value'=>array($smodel,'getTypeName'),

),



grid matches sorting definition with column ‘name’, so this may be the problem.

Great Man !! redguy, U r Awesome!!!

Can You please define, what is "TYPE" is here?

column name