问:如何使用自定义按钮创建自定义列?
我想用cgridview创建一个网格视图,如下所示。我该怎么办?
公司名称|标题1.1 |标题1.2 |标题2.1 |标题2.2 | 标题3.1 |标题3.2
AAAA1 | [按钮] | [按钮] | [按钮] | [按钮] | [按钮] | [按钮]
BBBB1 | [按钮] | [按钮] | [按钮] | [按钮] | [按钮] | [按钮]
CCCC1 | [按钮] | [按钮] | [按钮] | [按钮] | [按钮] | [按钮]
=============================================== =================================== 更新
这是我的cgridview代码
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'customer-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'customer_name',
array(
'class'=>'CButtonColumn',
'template'=>'{select1} {select2} {select3} {select4} {select5} {select6} {select7} {select8}',
'buttons'=>array
(
'select1' => array
(
'label'=>'Send an e-mail to this user',
'url'=>'Yii::app()->createUrl("job/getjobno", array("c_code"=>$data->c_code))',
'imageUrl'=>Yii::app()->request->baseUrl.'/protected/assets/images/gridview/icon_select.gif',
'options'=>array('style'=>'width:10px; border:none'),
'click'=>'function(event) {
$.ajax({
url:$(this).attr("href"),
dataType: \'json\',
success: function(data){
//alert(data.newjobno);
$("#Job_name").val(data.newjobno);
//console.log(\'target tr: \' + target);
//$(target).find(\'.item-price\').val(data.newjobno);
$("#customerlist").dialog("close");
}
});
event.preventDefault();
}',
),
),
),
array(
'type'=>'raw',
'value'=>'$data->c_code',
//'filter'=>array('style'=>'visible:none'),
'headerHtmlOptions'=>array('style'=>'width:0px; display:none; border:none; textdecoration:none'),
'htmlOptions'=>array('style'=>'display:none; border:none;', 'class'=>'customer-id'),
'header'=>false,
'filter'=>false,
),
),
)); ?>
答案 0 :(得分:3)
你几乎做对了。只是您需要更多按钮列,每列使用proper template
,并为每列正确指定buttons
:
'columns'=>array(
'customer_name',
array(
'header'=>'Header 1.1', // add headers this way
'class'=>'CButtonColumn',
'template'=>'{select1}', // only 1 button
'buttons'=>array
(
'select1' => array
(
// ... options for select1 button
),
),
),
array(
'header'=>'Header 1.2', // add headers this way
'class'=>'CButtonColumn',
'template'=>'{select2}', // only 1 button
'buttons'=>array
(
'select2' => array
(
// ... options for select2 button
),
),
),
// ... and so on add the other button columns ...
// ... rest of columns ...
),
如果你想要1列中的所有按钮,你只需在buttons
属性中添加按钮选项:
'columns'=>array(
'customer_name',
array(
'class'=>'CButtonColumn',
'template'=>'{select1}{select2}{select3}', // only 1 button
'buttons'=>array
(
'select1' => array
(
// ... options for select1 button
),
'select2' => array
(
// ... options for select2 button
),
'select3' => array
(
// ... options for select3 button
),
// ... and so on add the other button options ...
),
),
// ... rest of columns ...
),
更新:请记住,您在template
中提到的任何按钮,请使用该按钮指定按钮选项:
'class'=>'CButtonColumn',
'template'=>'{buttonId1}{buttonId2}',
'buttons'=> array(
'buttonId1'=>array(
// ... options ...
),
'buttonId2'=>array(
// ... options ...
)
)