听起来很简单吧?我搜索了高低,我无法找到如何做到这一点。我有一个CGridView:
$dataProvider = new CArrayDataProvider ($auctions);
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
'id::ID',
'product.title::Title',
'state::Status',
),
));
我想添加第四列,它只包含一个简单的按钮,按下后会执行javascript。我试过了:
array(
'class' => 'CButtonColumn',
),
这只是给我一个错误:
Undefined property: stdClass::$primaryKey
有什么想法吗?
答案 0 :(得分:8)
试试这个:
$dataProvider = new CArrayDataProvider ($auctions);
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'columns'=>array(
'id::ID',
'product.title::Title',
'state::Status',
array(
'type' => 'raw',
'value' => '<button onclick=\'alert("It works!")\' value="clickme"/>'
)
),
));
答案 1 :(得分:7)
最好的方法是使用CButtonColumn :: template和CButtonColumn :: buttons。
array(
'class' => 'CButtonColumn',
'template' => '{view} {update} {delete} {copy}',
'buttons'=>array(
'copy' => array(
'label'=>'Copy', // text label of the button
'url'=>"CHtml::normalizeUrl(array('copy', 'id'=>\$data->id))",
'imageUrl'=>'/path/to/copy.gif', // image URL of the button. If not set or false, a text link is used
'options' => array('class'=>'copy'), // HTML options for the button
),
),
),
在此示例中,有三个默认按钮和一个自定义“复制”按钮。 如果您不想要某些默认按钮(即查看,更新和删除),则可以将其删除。然后,定义您添加的按钮的属性。我定义了标签,网址,图片和HTML选项。