我曾試圖用cgridview與csqldataprovider列名。Yii的,排序和CsqlDataProvider
- 我的SQL查詢不同表中獲取數據。我在查詢中使用了別名。所以在gridview中,當我點擊標題值時,它需要列名進行排序。即
column name = Track
它將創建與... order by Track
查詢,但實際上它應該創建...order by t.trackname
。 - 要增加更多的複雜性,我有表的表名列名。 E.g與表名
Store
和col名trackid
相同的分貝我有同樣的分貝另一個表與表名trackid
。 - 我測試過solution。在cgridview中,當我指定我的列屬性時,它不會變得可排序(無錨標籤)。沒有列屬性它是可分類的。
在控制器文件,
$dataProvider=new CSqlDataProvider($query, array(
'totalItemCount'=>$count,
'sort'=>array('defaultOrder'=>'caseid DESC',
'attributes'=>array(
'caseid',
'trackid',
'status',
),
),
));
鑑於文件,
$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]'),
),
你能證明你的'$ query'? –