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]'),
- ),