如何使用单选按钮修改Yii中的Gridview列

时间:2013-08-12 03:04:50

标签: php yii yii-components

我有一个测试表的gridview(admin.php)。在这里,我有两个colums Contact Approval和Greetings Approval。我需要在管理页面中放置两个单选按钮(“联系人”和“问候”)。当我单击“联系人”单选按钮时,除了问候批准之外的所有列都应显示在gridview中,当我单击“问候”单选按钮时,除联系人批准之外的所有列都应显示在gridview中。 update.php也应该具有相同的效果。当我点击编辑选项时,update.php应该有基于radiobutton数据的字段。我怎么能这样做。 enter image description here

以下是radiobuttonlist的代码

    <div class="ContactGreetingGroup">        
<?php echo CHtml::radioButtonList('approval','',array('0'=>'Greetings Approval','1'=>'Contact Approval'),array(
    'labelOptions'=>array('style'=>'display:inline'),
    'onclick' => 'this.form.submit()', 
    'separator'=>''));     
?>
   </div>

1 个答案:

答案 0 :(得分:1)

CDataColumn具有“可见”属性。您只需根据参数进行设置即可。

$approval = Yii::app()->request->getParam('approval');

'columns'=>[
    [
       'name'    => 'greetings',
       'visible' => ($approval)? false : true,
    ],
    [
       'name'    => 'contact',
       'visible' => ($approval)? true : false,
    ],
],

至于更改编辑按钮的行为,(因为您需要一个参数来表示您是否需要“contact-mode”或“greetings-mode”)您必须覆盖view-buttons url属性。

[
    'class'=>'CButtonColumn',
    'buttons'=>[
        'view' => [
            'url'=>'Yii::app()->createUrl(
                "Something/Update", 
                ["id"=>$data->id, "approval"->$approval ])',
        ],
    ],
],

之后,您需要在update.php(_form.php)中进行类似的检查以确定要显示的内容。

if( $approval ) :
....

加了:

如果您的radiobuttonlist在form-tags内,您可以这样提交:

<form>  <!-- You need a form to use form.submit! -->
    <?php echo CHtml::radioButtonList('approval','',
        array('0'=>'Greetings Approval','1'=>'Contact Approval'),
        array('labelOptions'=>array('style'=>'display:inline'),
        'onclick' => 'this.form.submit()',   // Added this.
        'separator'=>'')
); ?>
</form>

我还编辑了上面的代码以匹配您的变量名称。我没有测试过它,但它应该给你一个我希望的想法。