返回介绍

32 Zii 组件-GridView 示例

发布于 2025-02-21 12:35:56 字数 3891 浏览 0 评论 0 收藏 0

CGridView 以表格的形式显示数据,CGridView 也支持分页和排序,CGridView 最基本的用法和 ListView 类型,也是通过设置 data provider ,通常是 CActiveDataProvider

修改上个例子 Yii Framework 开发教程(31) Zii 组件-DetailView 示例 ,把 ListView 该为 GridView:

 
    <?php $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider'=>$dataProvider,
        'ajaxUpdate'=>false,
        'template'=>'{pager}{summary}{items}{pager}',
 
    )); ?>

显示结果如下:

picture32.1

图片 32.1 picture32.1

可以看到 GridView 预设显示了所有的栏位,并使用预设的格式显示栏位,如果需要控制栏位显示和格式,可以通过配置 CGridView::columns 属性来实现。GridView 的每列为一个 CGridColumn 对象:

picture32.2

图片 32.2 picture32.2

  • CGridColumn 为所有 Grid 列表项的基类,表格的每例可以有一个表头,多个数据单元,和一个可选的表尾单元格。
  • CButtonColumn 表示该单元格为一个或多个按钮,预设显示三个按钮, “view”, “update” 和”delete”,可以通过设置 buttonstemplate 来更改。
  • CCheckBoxColumn 表示该单元格为 Checkbox,支持只读,单选或多选,通过配置 selectableRows 来修改
  • CDataColumn 表示该单元为数据或是表达式,通过配置 namevalue ,前者表示数据模型的属性名称,后者代码一个 PHP 表达式。
  • CLinkColumn 表示一个超链接,通过配置 labelurlimageUrl 来设置链接。

重新定义 GridView 的 columns 属性如下:

 
    <?php $this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'person-grid',
        'dataProvider'=>$dataProvider,
        'htmlOptions'=>array('style'=>'width:740px'),
        'pager'=>array(
                    'maxButtonCount'=>'7',
                    ),
                'columns'=>array(
 
                    array(
                        'header'=>'Name',
                        'type'=>'raw',
                        'value'=>'CHtml::link($data->FirstName .
                         " " . $data->LastName,
                         $this->grid->controller->createUrl
                        ("view",array("CustomerId"=>$data->CustomerId)))',
 
                        ),
 
                    'Company',
 
                    array(
                        'class'=>'CLinkColumn',
                        'header'=>'Email',
                        'imageUrl'=>'images/email.png',
                        'labelExpression'=>'$data->Email',
                        'urlExpression'=>'"mailto://".$data->Email',
                        'htmlOptions'=>array('style'=>'text-align:center'),
                        ),
                    array(
                        'class'=>'CButtonColumn',
                        'deleteConfirmation'=>'Are you sure to delete this item?',
                        ),
                    ),
 
    ));
    ?>

显示如下:

picture32.3

图片 32.3 picture32.3

点击姓名可以显示 DetailView。 ButtonColumn 的 update,search,delete 没有添加对应的 view ,就留给你自己加上了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文