当我单击CGridView中的视图按钮时,它将在新窗口中打开

时间:2014-03-31 11:24:20

标签: php yii target cgridview cbuttoncolumn

我在框架Yii中使用CGridView,我想当我点击查看按钮时,它会在新窗口中打开 如何添加" _new"目标?

3 个答案:

答案 0 :(得分:3)

'options' => array('target'=>'_new')添加到CGridView中的CButtonColumn配置数组

array(
    'class'=>'zii.widgets.grid.CButtonColumn',
    'template' => '{view}',
    'buttons'=>array(
        'view' => array(
            'url' => '', // view url
            'options' => array('target' => '_new'),
        ),
    ),
),

答案 1 :(得分:0)

您可以使用'options'属性提供html属性。

    <?php
    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider' => $dataProvider,
        'columns' => array(
            'table_field_1',
            'table_field_2',
            'table_field_3',
            array(
                'class' => 'CButtonColumn',
                /* ===== Template to set the buutons. Ex: If you dont want delete link, remove {delete} */
                //'template' => '{view} {update} {delete}',
                'buttons' => array(
                    'view' => array(
                        'options' => array('class' => 'newWindow'),
                    ),
                ),
            ),
        ),
    ));
    ?>

但是,打开一个新窗口取决于浏览器。使用target="_blank"target="_new"链接将在Mozilla的新标签页中打开,但在IE中您将获得新窗口。所以用户javascript生成新窗口。

    <?php
    $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider' => $dataProvider,
        'columns' => array(
            'table_field_1',
            'table_field_2',
            'table_field_3',
            array(
                'class' => 'CButtonColumn',
                /* ===== Template to set the buutons. Ex: If you dont want delete link, remove {delete} */
                //'template' => '{view} {update} {delete}',
                'buttons' => array(
                    'view' => array(
                        'options' => array('class' => 'newWindow'),
                    ),
                ),
            ),
        ),
    ));
    ?>

将此jQuery保存在.js文件中

    <script>
        $(document).ready(function()
        {
            $(".newWindow").click(function(e)
            {
                e.preventDefault();
                var url=$(this).attr('href');
                window.open(url, "_blank", "toolbar=no, scrollbars=yes, resizable=yes, top=100, left=100, width=1020, height=500");
            });
        });
    </script>

答案 2 :(得分:0)

您可以使用此

<?php
$this->widget('zii.widgets.grid.CGridView', array(
    'dataProvider' => $dataProvider,
    'columns' => array(
        'table_field_1',
        'table_field_2',
        'table_field_3',
        array(
            'class' => 'CButtonColumn',
            /* ===== Template to set the buutons. Ex: If you dont want delete link, remove {delete} */
            //'template' => '{view} {update} {delete}',
            'buttons' => array(
                'view' => array(
                    'options' => array('target' => '_blank'),
                ),
            ),
        ),
    ),
));
?>