使用自定义按钮创建自定义列?

时间:2012-12-20 10:10:13

标签: php yii cbuttoncolumn

问:如何使用自定义按钮创建自定义列?

我想用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,
        ),
    ),
)); ?>

1 个答案:

答案 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 ...
    )

)
相关问题