当你需要在一个GridView渲染某一个复杂元素的时候(特别是在这种情况下,这是一个小部件),这就需要你在控制器中调用一个动作。例如你给一个GridView的定义这样的一列:

<?php

$this->widget('bootstrap.widgets.TbGridView', array(
    'id' => 'folder-grid',
    'dataProvider' => $model->search($folder_id),
    'template' => "{items}{pager}",
    'rowHtmlOptionsExpression' => 'array("file_id"=>$data->file_id, "file_name"=>rtrim($data->file_name,".".$data->file_ext), "file_ext"=>$data->file_ext)',
    'columns' => array(
        array(
            'selectableRows' => 2,
            'class' => 'CCheckBoxColumn',
            'headerHtmlOptions' => array('width' => '10px'),
            'htmlOptions' => array('class' => 'notopen'),
            'checkBoxHtmlOptions' => array('name' => 'ids[]'),
        ),
        array(
            'name' => 'folder_id',
            'headerHtmlOptions' => array('style' => 'display:none'),
            'htmlOptions' => array('style' => 'display:none;'),
        ),
        array(
            'name' => 'file_name',
            'header' => '文件名',
            'type' => 'raw',
            'headerHtmlOptions' => array('style' => 'width:100%;'),
            'htmlOptions' => array('class' => 'ellipsis'),
            'value' => 'CHtml::openTag("img", array("src" => TFileUtil::getFileTypeIcon($data->file_name,true),"style"=>"margin-right:4px")) . rtrim($data->file_name,".".$data->file_ext)',
        ),
        array(
            'name' => 'more_opt',
            'header' => '',
            'value' => array($this, 'renderButtons'),
            'sortable' => false,
            'htmlOptions' => array('class' => 'more notopen'),
            'headerHtmlOptions' => array('style' => 'width:40px;'),
        ),
        array(
            'name' => 'file_size',
            'header' => '大小',
            'value' => 'TFileUtil::getFileSize($data->file_size)',
            'headerHtmlOptions' => array('style' => 'width:80px;'),
        ),
        array(
            'name' => 'update_time',
            'header' => '修改时间',
            'value' => 'date("Y-m-d H:i:s", $data->update_time)',
            'headerHtmlOptions' => array('style' => 'width:160px;'),
        ),
        array(
            'class' => 'bootstrap.widgets.TbButtonColumn',
            'template' => '{update}{download}{remove}',
            'buttons' => array(
                'update' => array(
                    'label' => '',
                    'options' => array(
                        'class' => 'icon-update td-link-icon',
                        'data-toggle' => 'modal',
                        'data-target' => '#rename_file',
                        'title' => '修改',
                    ),
                    'click' => 'js:function(){ 
                         var $row = $(this).parents("tr");
                         var $column = $(this).parent("td").siblings();
                           var id = $column.eq(0).children("input").val();
                          $("#rename_file #FilePrivate_id").val(id);
                          $("#rename_file #FilePrivate_file_name").val($row.attr("file_name"))
                            .next().text("." + $row.attr("file_ext"));
                       }',
                ),
                'download' => array(
                    'label' => '',
                    'url' => 'Yii::app()->controller->createUrl("/file/private/download",array(
                    "id"=>$data->id,"fileId"=>$data->file_id,"fileName"=>FilePrivate::getFileName($data->id,$data->file_id), "createTime"=>$data->create_time))',
                    'options' => array(
                        'class' => 'download td-link-icon icon-download-2',
                        'title' => '下载',
                    ),
                ),
                'remove' => array(
                    'label' => '',
                    'options' => array(
                        'class' => 'icon-remove td-link-icon',
                        'data-toggle' => 'modal',
                        'data-target' => '#remove',
                        'title' => '删除',
                    ),
                    'click' => 'js:function(){ 
                         var $column = $(this).parent("td").siblings();
                         var id = $column.eq(0).children("input").val();
                          $("#remove #FilePrivate_id").val(id);
                          $("#remove h4").text("删除文件");       
                          $("#remove .note span:eq(1)").text("确定要删除所选的文件吗?");
                          $("#remove #removefiles").hide();
                          $("#remove #removefile").show();
                       }',
                ),
            ),
            'header' => '操作',
            'htmlOptions' => array('style' => 'width:80px;text-align:center;', 'class' => 'notopen'),
            'headerHtmlOptions' => array('style' => 'width:80px;text-align:center;'),
        ),
    )
));
?>

然后在控制器里面这么渲染

/**
     * 显示更多操作的按钮
     */
    public function renderButtons() {
        $this->widget('bootstrap.widgets.TbButtonGroup', array(
            'size' => 'small',
            'buttons' => array(
                array('label' => '', 'items' => array(
                        array('label' => '重命名', 'url' => 'javascript:;', 'linkOptions' => array('id' => 'renameFile')),
                        array('label' => '移动到', 'url' => 'javascript:;', 'linkOptions' => array('id' => 'moveFile')),
                        array('label' => '复制到', 'url' => 'javascript:;', 'linkOptions' => array('id' => 'copyFile'))
                )),
            ),
        ));
    }

就能够显示如下图显示的页面:
 

http://stackoverflow.com/questions/16352998/yii-bootstrap-widget-tbbuttoncolumn-widget-tbbuttongroup

yii在TbGridView的td里面加入相应的下拉选项(转)的更多相关文章

  1. Yii 1开发日记 -- 后台搜索功能下拉及关联表搜索

    Yii 1 实现后台搜索,效果如下: 一. 下拉搜索: 1.模型中和常规的一样 if (isset($_GET['agency']['status']) && $_GET['agenc ...

  2. yii框架中的下拉菜单和单选框

    yii中的下拉菜单: 第一种: <?= $form->field($model, 'parent_id')->dropDownList(ArrayHelper::map($data, ...

  3. Yii 生成表单下拉选框及查询下拉选框

    CHtml类参考: http://www.yiichina.com/api/CHtml#activeDropDownList-detail activeDropDownList() 方法 public ...

  4. yii NAV x下拉

    $menuItems[] = [ 'label' => "<img src='/images/small.jpg'>", 'url' => ['/site/ ...

  5. mydetails-yii1

    1.yii验证码多余的get a new code ,即使在main.php中配置了中文也是出现获取新图片,影响效果 需要把 <?php $this->widget('CCaptcha') ...

  6. sphinx的使用

    1.下载地址 http://sphinxsearch.com/downloads/release/ 2.将其解压到D:\sphinx,并在D:\sphinx下新建目录data(用来存放索引文件)与lo ...

  7. 很强大的HTML+CSS+JS面试题(附带答案)

    一.单项选择(165题) 1.HTML是什么意思? A)高级文本语言 B)超文本标记语言 C)扩展标记语言 D)图形化标记语言 2.浏览器针对于HTML文档起到了什么作用? A)浏览器用于创建HTML ...

  8. SharePoint 2013 扩展查阅项功能

    SharePoint 2013的查阅项功能,就是可以扩展其他列表字段为当前列表选项,但是选项太多的时候,会造成选择起来非常麻烦,所以,我们采取JS+Ajax的方式,改善一下这个展示,使操作更加方便. ...

  9. html5基础知识点

    1.WEB基础知识 1.WEB 与 Internet 1.Internet 互联网 若干台计算机 通过 网线 所连接而成的物理设备 主要服务: 1.Telnet 2.Email 3.WWW(Word ...

随机推荐

  1. wince6.0应用程序自启动

    主要思想:将应用程序添加到image里,然后用应用程序代替桌面应用程序,从而使应用程序自启动. 主要步骤:                 1.将应用程序MyApp.exe拷贝到wince600\OS ...

  2. CentOS 的网络配置

    1, ifcfg-ethX, 设置对应网口的IP等信息, 比如第一个网口, 那么vim /etc/sysconfig/network-scripts/ifcfg-eth0,配置例子: DEVICE=& ...

  3. BeanDefinitionStoreException: Failed to read candidate component class: URL

    如题,遇到这种情况一般都是引用jar包版本不一致或者编译后的class除了问题 解决办法: a.如果是maven项目,把项目全部clean一下,重新mvn install b.如果不是maven项目, ...

  4. Linux高级使用功能

    1.磁盘管理 LVM 对磁盘的管理,可以拉伸分区的大小而不用格式化 2.网络管理 Iptables 对网络的端口进行管理,放行禁用 3.服务器 apache.nigix html静态的服务器 nigi ...

  5. winmail安装完成后,SMTP/POP3/ADMIN/HTTP/IMAP/LDAP服务不能启动?

    问题原因: 1.特殊端口被占用,可以用命令netstat -ano 查看 2.阿帕奇网络服务 httpd 未开启 解决方案:开启服务后,登录管理工具,点注册,它会自动跳出"httpd通过防火 ...

  6. Ubuntu 12.04 gedit编辑器 中文乱码

    百度一下查看了很多关于这个问题的解决方法,无非是用通过配置编辑器修改键值来解决.但是由于我的ubuntu是12.04版本的,搜索到的很多方法都不能用,网上一般的解决办法如下: 打开“注册表”(从字面理 ...

  7. 让执行程序引用特定目录下的Dll

    当写一个软件,特别是大型的软件,经常会引用一些第三方的类库,再加上一些自己的项目,如果这些Dll全都放在主目录下的话,会显得比较杂乱.我们希望将项目的类库分类成文件夹存放,这样才显得比较整洁. 解决方 ...

  8. 图之BFS和DFS遍历的实现并解决一次旅游中发现的问题

    这篇文章用来复习使用BFS(Breadth First Search)和DFS(Depth First Search) 并解决一个在旅游时遇到的问题. 关于图的邻接表存储与邻接矩阵的存储,各有优缺点. ...

  9. url 参数的加号变成空格处理

    今天在调试客户端向服务器传递参数时,参数中的“+”全部变成了空格,原因是URL中默认的将“+”号转义了. 解决方法如下: 方法一.修改客户端 将客户端带“+”的参数中的“+”全部替换为‍“2B%”,这 ...

  10. 学习总结 java Iterator迭代器练习

    package com.hanqi.jh; import java.util.*; public class Text3 { public static void main(String[] args ...