【发布时间】:2012-11-20 01:48:44
【问题描述】:
我曾尝试将 cgridview 与 csqldataprovider 一起使用。
- 我的 sql 查询从不同的表中获取数据。我在查询中使用了别名。所以在gridview中,当我点击标题值时,它会使用列名进行排序。即
column name = Track它将使用... order by Track创建查询,但实际上它应该创建...order by t.trackname。 - 为了增加复杂性,我将表中的列名作为表名。例如,在同一个数据库中,表名
Store和列名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吗?