I had trying to use cgridview with csqldataprovider.
- my sql query takes data from different tables. I had used alias in query. So in gridview when i click on header value, it takes column name for sorting. i.e,
column name = Track
it will create query with... order by Track
but actually it should create...order by t.trackname
. - To add more complexity i have column name in table as table name. E.g In same db with table name
Store
and col nametrackid
i have another table in same db with table nametrackid
. - I had checked solution. Here in cgridview when I specify my column attribute it is not becoming sort-able (no anchor tags). Without column attribute it is sort-able.
In controller file,
$dataProvider=new CSqlDataProvider($query, array(
'totalItemCount'=>$count,
'sort'=>array('defaultOrder'=>'caseid DESC',
'attributes'=>array(
'caseid',
'trackid',
'status',
),
),
));
In view file,
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'ajaxUpdate'=>true,
'columns'=>array(
array('header'=>'Case','name'=>'Case','value'=>'$data[caseid]'),
array('header'=>'Track','name'=>'Track','value'=>'$data[trackid]'),
array('header'=>'Status','name'=>'Status','value'=>'$data[status]'),
),