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 ...
随机推荐
- 3、Spring Cloud - Eureka(高可用Eureka Server集群)
在实际的项目中,可能有几十个或者几百个的微服务实例,这时 Eureka Server 承担了非 常高的负载.由于 Eureka Server 在微服务架构中有着举足重轻的作用,所以需要对 Eureka ...
- docker-4-镜像
是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件, 它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. 1.UnionFS(联合文件 ...
- Spring(一)之概括与架构
个人说明: 下面有一部分引用该链接:https://www.tutorialspoint.com/spring/spring_architecture.htm 另外一部分加上我个人的使用经验和体会 之 ...
- [转]C#三层架构登陆实例
很早之前,就听说过三层结构了.当时只知道 三层结构 是把 系统的 界面 跟 数据库操作等不相关的程序分别开来.原来这么简单的实现,确实传说中的 三层结构啊. 首先,先来看一下是哪三层.表示层(UI, ...
- PHP面试系列 之框架(一)---- MVC框架基本工作原理
题:谈谈你对MVC的认识,介绍集中目前比较流行的MVC框架 考点: (1)MVC工作原理 (2)常见MVC框架 延伸: (1)单一入口的工作原理 (2)模板引擎的理解 (1)MVC工作原理 Model ...
- HDU 1561 The more, The Better(树形dp之树形01背包)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1561 The more, The Better Time Limit: 6000/2000 MS (J ...
- HDU 1165 公式推导题
题目链接: acm.hdu.edu.cn/showproblem.php?pid=1165 Eddy's research II Time Limit: 4000/2000 MS (Java/Othe ...
- 网络测量中基于Sketch方法的调查
目录 LD Sketch SeqHash What's New reversible sketch Count-Sketch和Count-min sketch Diamond Sketch: Accu ...
- DPDK硬件盒子的初步安装测试
DPDK硬件盒子 接口 两个USB接口:用于连接键盘等. HDMI接口:高清晰度多媒体接口,用于连接显示器,但是一般的电脑显示器使用的是VGA口,可以用一个转接头连接. 两个RJ接口:可接入网线连接. ...
- 支付宝在ios应用上的开发[转]
前奏 现在随着移动开发的快速发展,越来越多的应用要求在线支付功能.最近做了一个关于支付宝支付功能的应用,在使用支付宝的过程中,遇到一些不必要的弯路,因此,写了这篇文章总结一下关于ios开发如何使用支付 ...