1

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

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

1 回答 1

3

你几乎做对了。只是您将需要更多按钮列,为每列使用正确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 ...
),

更新:只要记住您在 中提到的任何 buttonId template,使用该 buttonId 来指定按钮选项:

'class'=>'CButtonColumn',
'template'=>'{buttonId1}{buttonId2}',
'buttons'=> array(
    'buttonId1'=>array(
        // ... options ...
    ),
    'buttonId2'=>array(
        // ... options ...
    )

)
于 2012-12-20T10:37:46.153 回答