求助啊:用CSqlDataProvider结合CGridView产生报表 [ 新手入门 ]
Controller代码如下:
$sql = "SELECT wo_nbr,wo_part,wo_ord_date,wo_due_date,wo_qty_chg,wo_qty_comp,wo_qty_ord,wo_site,wo_status,wo_type
FROM wo_mstr WHERE UPPER(wo_status) = 'A'";
$count=Yii::app()->db->createCommand("SELECT COUNT(*) FROM wo_mstr where UPPER(wo_status) = 'A'")->queryScalar();
$dataProvider = new CSqlDataProvider($sql, array(
'keyField'=>'wo_nbr',
'totalItemCount' => $count,
'sort'=>array(
'attributes'=>array(
'wo_nbr','wo_part','wo_ord_date','wo_qty_ord'
),
),
'pagination'=>array(
'pageSize'=>20,
),
));
$this->render('allplan', array('dataProvider'=>$dataProvider));
View代码如下:
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
array(
'type'=>'raw',
'header'=>'工单号',
'value'=>'CHtml::link($data->wo_nbr, array("id",$data->wo_nbr))',//Yii::app()->createUrl("woplan/allplan", array("wo_nbr"=>$data->wo_nbr))
),
array(
'class'=>'CLinkColumn',
'labelExpression'=>'$data->wo_nbr',
'urlExpression'=>'Yii::app()->createUrl("admin/user", array("id"=>$data->wo_nbr))',
),
'wo_part'=>array('name'=>'wo_part','value'=>$data->wo_part,'header'=>'型号'),
),
));
view显示的截图如下: [attach]226[/attach] 现在出现的问题是view里面没有显示链接,问各位大虾怎么处理,是不是我写的代码有问题。因我的报表涉及到很多表,所以需要自己写SQL,这里只拿wo_mstr一个表来做测试。大家帮忙。如果有别的方法也可以。
共 11 条回复
-
兄弟们,结贴了,找到方法了,主要原因是$data不是对象是个数组,解决方法如下:
array( 'name'=>'wo_nbr', 'type'=>'raw', 'header'=>'工单号', 'value'=>'CHtml::link($data["wo_nbr"], array("id",$data["wo_nbr"]))', ),
此方法源自下面这个帖子:
http://www.yiiframework.com/forum/index.php?/topic/12066-no-data-object-with-csqldataprovider-or-carraydataprovider/
ulpyuxa 深圳
注册时间:2011-04-18
最后登录:2020-09-01
在线时长:4小时28分
最后登录:2020-09-01
在线时长:4小时28分
- 粉丝9
- 金钱845
- 威望0
- 积分885