我曾尝试在csqldataprovider中使用cgridview。
column name = Track --它将用... order by Track创建查询,但实际上它应该创建...order by t.trackname。Store和trackid,我在同一数据库中有另一个表名为trackid。在控制器文件中,
$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]'),
),发布于 2012-12-02 16:28:34
您必须为CGridView的每一列指定正确的CGridView。在示例代码中,它是不正确的,您使用的是'name'=>'Case',而应该是'name'=>'caseid',即name的值应该是您在sql中指定的别名的确切值。
更新:
value属性。name属性将负责从db结果集中获取正确的值。header将负责显示列标题名称,在您的示例中它是Case。
示例:
‘列’=‘Case=’>数组(数组(‘header’=‘Case’‘,’name‘=’caseid‘’),//‘值’=‘$datacaseid’‘),数组(头Case=’>‘跟踪’,‘名称’=‘trackid’),//‘值’‘=’$datatrackid‘),数组(头Case=’>状态‘,’名称‘=’Case=‘>状态’‘,//’值‘’>$datastatus‘),sort的attributes数组和name中使用这些别名的值。
Sql示例:
选择t.trackname作为some_alias ..。
数据提供程序:
‘排序’=>数组(‘属性’=>数组(‘some_别名’,// .更多的属性. ),// .更多的选择),
CGridView:
‘’columns‘=>数组(数组(’Header‘=’some_alias‘,’Name‘=>’some_别名‘,’value‘=’$data“some_alias‘//如前所述-如果您不修改该值,这是不必要的)
因此,当您排序时,生成的查询将类似于:order by some_alias,这非常好。https://stackoverflow.com/questions/13668964
复制相似问题