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 ...
随机推荐
- Hadoop学习之路(二十二)MapReduce的输入和输出
MapReduce的输入 作为一个会编写MR程序的人来说,知道map方法的参数是默认的数据读取组件读取到的一行数据 1.是谁在读取? 是谁在调用这个map方法? 查看源码Mapper.java知道是r ...
- 随手练——S(n)=O(1),判断一个链表是否为“回文”
方法一:T(n)=O(n),S(n)=O(n) 走完一遍链表,每个值入栈,之后再走一遍链表,和每次弹出的栈顶进行比较. 核心: LNode *p = l->next; while (p) { s ...
- 更有效率的使用Visual Studio
工欲善其事,必先利其器.虽然说Vim和Emacs是神器,但是对于使用Visual Studio的程序员来说,我们也可以通过一些快捷键和潜在的一些功能实现脱离鼠标写代码,提高工作效率,像使用Vim一样使 ...
- 获取 当前显示的 UIViewController
UIViewController * findBestVC(UIViewController *vc) { if (vc.presentedViewController) { return findB ...
- 深入理解Java虚拟机(一) 运行时数据区划分
前言:从我学Java的第一天开始,我的大学老师就告诉我 Java语言相比C.C++的语言有一个非常强大的功能,那就是自动内存管理:我们用Java编码时不需要申请或释放内存等,这些工作全部交由我们的Ja ...
- 微服务—熔断器Hystrix
前言在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元应用间通过服务注册与发现的方式互相依赖. 由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服 ...
- 【转】:Oracle Linux6.9下安装Oracle 11.2.0.4.0及psu补丁升级
为方便截图,本文操作都在vmware虚拟机上完成. 目录: 1.操作系统安装 2.数据库安装 3.PSU补丁升级卸载 part1 操作系统安装 Oracle (Enterprise) Linux ...
- 仿手机QQ消息小红点动画2
前言 上一篇把动画的实现步骤大致理清,需要确认小尾巴的绘制区域,关键就是确定4个顶点的位置.大家可以根据需要,选择不同的计算方式. 今天,要实现: 文字的添加 尾巴拉长用弧形代替直线 下面是现在的效果 ...
- VB
on error resume next: 从该语句开始,遇到错误时程序不会中止,也不会出现错误提示,将继续运行.作用范围直至程序结束或语句所在函数等结束 Public Property :可读也可写 ...
- Java之数据类型
Java数据类型分为基本数据类型和引用数据类型: 1.基本数据类型一共8种:byte,short,int, long,float,double,boolean和char; 具体可分为三类: ① 整数型 ...