Yii2 Gridview 动态显示行或列和action列
我们知道Yii中的GridView组件是非常好用的。
某些情况要动态显示某列,这时候就要用到visible属性
'propString' => ['attribute' => 'propertyNamesStringV2','format' => 'raw', 'visible' => isset($_GET['pno']) ? true : false],
注意rowOptions。 根据文档他可以接收数组或匿名函数。将判断逻辑写到匿名函数里面。当满足就给当前行加个隐藏的class。相当于不显示。
给个例子,注意好像效率比较低,可以通过一次查询再判断。
<?=GridView::widget([
'dataProvider' => $dataProvider,
'rowOptions' => function ($model, $key, $index, $grid){
if(!$res = OrderComment::findOne(['orderId' => $model->orderId, 'itemId' => $model->itemId ]) ){
return ['class' => 'hide'];
}
},
'columns' => [
Order::getOrderViewMoreLink($dataProvider),
//'order.addTime:datetime',
$gridViewButtonsHad,
],
]);?>
帖一个列完整代码
<?php use yii\helpers\Html;
use yii\grid\GridView; /* @var $this yii\web\View */
/* @var $dataProvider yii\data\ActiveDataProvider */
if(Yii::$app->request->url == '/user/staff' || isset($_GET['UserSearch']['sType'])){
$this->title = '员工管理';
}else{
$this->title = '用户管理';
} $this->params['breadcrumbs'][] = $this->title; $this->params['actionButtons'] = Html::a('添加用户', ['create'], ['class' => 'btn btn-success btn-sm',]); $gridViewButtons = [
'class' => 'yii\grid\ActionColumn',
'template' => '{view} {be-promoter} {update} {qrdown}',
'buttons' => [
'view' => function($url, $model){
return Html::a('<i class="fa fa-eye"></i> 查看', $url, ['class' => 'btn btn-primary btn-sm']);
},
'be-promoter' => function($url, $model){
if(!empty($model->consumer)){
if($model->consumer->isPromoter()){
return Html::a('<i class="fa fa-edit"></i> 取消推广员', $url .'&isBe=0',
[
'class' => 'btn btn-danger btn-sm',
'data-confirm' => '该操作将清除所有推广积分和等级,确定取消吗?',
'data-method' => "post"
]);
}else{
return Html::a('<i class="fa fa-edit"></i> 设置为推广员', $url .'&isBe=1', ['class' => 'btn btn-info btn-sm',]
);
}
}
},
'update' => function ($url, $model) {
return Html::a('<i class="fa fa-edit"></i> 编辑', $url, ['class' => 'btn btn-default btn-sm']);
},
'qrdown' => function($url, $model){
if(!empty($model->consumer)){
if($model->consumer->isPromoter()){
return Html::a('下载二维码', $url .'&consumerId='.$model->consumer->id,
[
'class' => 'btn btn-success btn-sm',
]);
}
}
},
],
];
?> <div class="user-index"> <?= $this->render('_search', ['model' => $searchModel, 'queryParams' => $queryParams]) ?> <?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
[
'label' => '头像LOGO',
'format' => ['image',['class' => 'thumbnail_image']],
'value' => 'avatarUrl',
],
'username',
'nickname',
[
'attribute' => 'position',
'visible' => Yii::$app->request->pathInfo == 'user/staff'
],
[
'label' => '积分',
'format' => 'html',
'value' => function ($model, $key, $index, $column){
$consumer = $model->consumer;
if(empty($consumer->credit)) return 0;
return Html::a($consumer->credit,['user/credit-detail','consumerId' => $consumer->id]);
},
],
[
'label' => '等级',
'attribute' => 'consumer.levelName'
],
[
'label' => '币',
'format' => 'html',
'value' => function ($model, $key, $index, $column){
$consumer = $model->consumer;
if(empty($consumer->belovedCoin)) return 0;
return Html::a($consumer->belovedCoin,['user/coin-detail','consumerId' => $consumer->id]);
},
],
[
'label' => '推广等级',
'attribute' => 'consumer.promotionLevel'
],
[
'label' => '推广积分',
'format' => 'html',
'value' => function ($model, $key, $index, $column){
$consumer = $model->consumer;
if(empty($consumer->promotionPoint)) return 0;
return Html::a($consumer->promotionPoint,['user/promotion-point-detail','consumerId' => $consumer->id]);
},
],
[
'label' => '推广链接',
'attribute' => 'consumer.promoterCode'
],
'mobile',
'email:email',
// 'role',
// 'status',
'created_at:datetime',
//'updated_at:datetime',
//['class' => 'yii\grid\ActionColumn'],
$gridViewButtons
],
]); ?> </div>
Yii2 Gridview 动态显示行或列和action列的更多相关文章
- Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色
上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数 ...
- GRIDVIEW多行多列合并单元格(合并列)
GitHub项目地址:https://github.com/mingceng/merge-gridviewcell 去年的时候,我写了两篇文章: GridView多行多列合并单元格(完整代码和例子) ...
- GridView——标题行自适应单元格列宽与选中单元格变色
首先看效果图: 主要实现—— 1.前台GridView代码: <asp:GridView Height="100%" Width="98%" ID=&qu ...
- 动态横向(水平)合并GridView数据行DataRow的列
前一段时间,Insus.NET有写过<动态合并GridView数据行DataRow的列>http://www.cnblogs.com/insus/p/3238348.html, 那是纵向( ...
- GridView 显示行号 设置行号列的宽度
/// <summary> /// GridView 显示行号 设置行号列的宽度 /// </summary> /// <param name="gv" ...
- yii2 GridView常见操作
作者:白狼 出处:http://www.manks.top/article/yii2_gridview 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- android手机旋转屏幕时让GridView的列数与列宽度自适应
无意中打开了一年前做过的一个android应用的代码,看到里面实现的一个小功能点(如题),现写篇文章做个笔记.当时面临的问题是,在旋转屏幕的时候需要让gridview的列数与宽度能自适应屏幕宽度,每个 ...
- GridView/DataGrid行单击和双击事件实现代码_.Net教程
功能: 单击选中行,双击打开详细页面 说明:单击事件(onclick)使用了 setTimeout 延迟,根据实际需要修改延迟时间 ;当双击时,通过全局变量 dbl_click 来取消单击事件的响应 ...
- DEV express 对Gridview某行的元素赋值
1:获取选中的行某列的值 string colValue= this.gridView1.GetRowCellValue(this.gridView1.FocusedRowHandle, this.g ...
随机推荐
- BZOJ3926:[ZJOI2015]诸神眷顾的幻想乡(广义SAM)
Description 幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生日,无数幽香的粉丝到了幽香家门前的太阳花田上来为幽香庆祝生日. 粉丝们非常热情,自发组织表演了一系列节目给幽香看. ...
- Asp.Net Core + Ocelot 网关搭建:路由简单配置
前言 Ocelot是一个基于中间件的网关实现,功能有很多.从浅入深简单学习并记录一下吧.本篇就是一个简单的路由配置实现. DEMO 搭建 首先建立三个项目.Api.User,Api.Artic ...
- Fedora Server 上配置 MariaDb 集群
下载与安装 MariaDB Galera Cluster 10.1之前的版本安装,输入以下命令进行安装: sudo dnf install mariadb-galera-server 如果电脑上还没安 ...
- WebRTC博客推荐
1. http://www.cnblogs.com/lingyunhu/ 2. http://www.jianshu.com/u/eadc7531ecb8
- 映射篇:request-String-Object-Map之间相互转化(程序员的成长之路---第5篇)
为什么写这一篇 问题一:jdbc连接数据库返回的对象是ResultSet,如何把ResultSet对象中的值转换为我们自建的各种实体类? 我估计,80%的程序员会写jdbc数据库连接,但开发项目依然用 ...
- Oracle 12.2 设置LOCAL_TEMP_TABLESPACE
12.2 设置LOCAL_TEMP_TABLESPACE SQL> select username,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE,LOCAL_ ...
- javacript window对象
Window -- 代表浏览器中一个打开的窗口: 对象属性 window //窗口自身 window.self //引用本窗户window=window.self window.name //为窗口命 ...
- Python-常见错误梳理
1. takes exactly 1 argument (2 given) 出现此错误一般是在某对象调用类的某方法时出现.因为在python中某类的实例对象调用方法时,是首先将自身作为一个参数传入此方 ...
- javascript对象定义及创建
javascript对象 定义 javascript中的对象,可以理解成是一个键值对的集合,键是调用每个值的名称,值可以是基本变量,还可以是函数和对象. 创建方法 第一种方法 通过顶级Object类来 ...
- .net下redis和rabbitmq简单使用demo
是参考 一下两篇博文整理了下. Redis: https://www.cnblogs.com/5ishare/p/6492380.html RabbitMq: https://www.cnbl ...