kartik-v/yii2-grid

文档http://demos.krajee.com/grid

在win7下

 composer  require kartik-v/yii2-grid "@dev"

在vender下多了kartik-v,kartik-v下yii2-export,yii2-grid,yii2-krajee-base,yii2-mpdf

还修改了,vendor\yiisoft\extensions.php

 'kartik-v/yii2-krajee-base' =>
array (
'name' => 'kartik-v/yii2-krajee-base',
'version' => '1.8.1.0',
'alias' =>
array (
'@kartik/base' => $vendorDir . '/kartik-v/yii2-krajee-base',
),
),
'kartik-v/yii2-grid' =>
array (
'name' => 'kartik-v/yii2-grid',
'version' => '2.7.0',
'alias' =>
array (
'@kartik/grid' => $vendorDir . '/kartik-v/yii2-grid',
),
),
'kartik-v/yii2-export' =>
array (
'name' => 'kartik-v/yii2-export',
'version' => 'v1.2.0',
'alias' =>
array (
'@kartik/export' => $vendorDir . '/kartik-v/yii2-export',
),
),
'kartik-v/yii2-mpdf' =>
array (
'name' => 'kartik-v/yii2-mpdf',
'version' => 'v3.3.0',
'alias' =>
array (
'@kartik/mpdf' => $vendorDir . '/kartik-v/yii2-mpdf',
),
),

但是当保存文件为PDF还会提示错误,它还需要mpdf

去github下载,mpdf,放到vender下

在vendor\composer\autoload_namespaces.php添加

'mPDF' => array($vendorDir . '/mpdf'),

(1)在在配置文件main.php(使用的是yii advance)添加

'modules' => [
'gridview'=>[
'class' => '\kartik\grid\Module',
'downloadAction' => 'gridview/export/download',
'i18n'=>[
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@kvgrid/messages',
'forceTranslation' => true
]
]
],

(2)使用

Orders、Custom通过uid关联

在Orders中

public function getCustom() {
return $this->hasOne(Custom::className(), ['id' => 'uid']);
}

去写OrderSearch去继承Orders表

class OrderSearch extends Orders
{
public $tel,$trade_type,$pay_type;
public function rules()
{
return [
//省略
['tel','safe'] //添加后才能搜索
];
}
  //省略
public function search($params)
{
$query = Orders::find();
$query->joinWith(['custom']);//添加
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->setSort([ //添加-----排序
'attributes' => [
'tel' => [
'asc' => [Custom::tableName().'.tel' => SORT_ASC],
'desc' => [Custom::tableName().'.tel' => SORT_DESC],
'label' => '手机号'
],'create_time'=>[],
]
]);
$this->load($params); if (!$this->validate()) {
return $dataProvider;
}
$query->andFilterWhere([
'id' => $this->id,
'uid' => $this->uid,'create_time' => $this->create_time,
]);
     //省略
$query->andFilterWhere(['like', Custom::tableName().'.tel', $this->tel]) ;//搜索 return $dataProvider;
}
}

Controller代码

public function actionIndex()
{
$searchModel = newOrderSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    return $this->render('index', [ 'searchModel' => $searchModel, 'dataProvider' => $dataProvider, ]);
}

View中

<?php
use yii\helpers\Html;
use kartik\grid\GridView;?>
<div class="user-index">
<?= GridView::widget([
'panel'=>['type'=>'primary', 'heading'=>'表头'],
'dataProvider' => $dataProvider,
'filterModel'=>$searchModel,
'showPageSummary'=>true, //显示统计
'columns' => [
['class'=>'kartik\grid\SerialColumn'],
[
'attribute' => 'tel',
'value' => 'custom.tel',
'filter'=>Html::activeTextInput($searchModel, 'tel',['class'=>'form-control']),//添加搜索框
'label'=>'手机号',
'pageSummary'=>'总计',
'pageSummaryOptions'=>['class'=>'text-right text-warning'],
],
[
'attribute'=>'paid',
'format'=>['decimal', ],
'pageSummary'=>true,
], ],
'tableOptions'=>['class' => 'table table-hover'],
'toolbar'=>[
'{toggleData}',
'{export}',
],
'exportConfig'=>[
GridView::HTML => [],
GridView::PDF => [],
       GridView::CSV => [],
], ]); ?> </div>

(3)PDF下载乱码问题

修改vendor\kartik-v\yii2-grid\controllers下ExportController.php

protected function generatePDF($content, $filename, $config = [])
{
unset($config['contentBefore'], $config['contentAfter']);
$config['filename'] = $filename;
$config['mode']=Pdf::MODE_UTF8;//需要核心字库
$config['methods']['SetAuthor'] = ['Krajee Solutions'];
$config['methods']['SetHeader']=['页眉'];
$config['methods']['SetFooter']=['页脚'];
$config['methods']['SetCreator'] = ['Krajee Yii2 Grid Export Extension'];
$config['content'] = $content;
$config['options']=['title' => '中文',
'autoLangToFont' => true, //这几个配置加上可以显示中文
'autoScriptToLang' => true, //这几个配置加上可以显示中文
'autoVietnamese' => true, //这几个配置加上可以显示中文
'autoArabic' => true, //这几个配置加上可以显示中文
];
$pdf = new Pdf($config);
echo $pdf->render();
}

核心字库在vendor\mpdf\ttfonts下

(3)CSV下载乱码问题

public function actionDownload()
{
$type = empty($_POST['export_filetype']) ? 'html' : $_POST['export_filetype'];
  //省略
if($type=='csv'){
$content="\xEF\xBB\xBF".$content; //添加BOM头
}
  //省略
  return $content;
}

GridView联表搜索,排序的更多相关文章

  1. MySQL的选则字段+联表+判断+排序(order by)

    MySQL的选则字段+联表+判断+排序(order by) 两个表:1.成绩单 2.查询名单 目标: 1.选中全部字段,用于输出. 2.成绩单中有很多人的成绩,第一步是希望通过联表,只查查询名单上的人 ...

  2. Yii CGridView 关联表搜索排序实例

    在这篇文章中,我准备讲解如何在CGridView中搜索或者排序关联表中的某一行,通过给Yii Blog demo添加一个list页面. 首先,检查你的blog demo里的protected\mode ...

  3. Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题

    Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...

  4. 解决MySQL联表时出现字符集不一样

    mysql 建表时都会设置表的字符集和排序规则,通常是 utf8,不过我这边习惯建表的字符集是 utf8mb4,排序规则是 utf8mb4_unicode_ci.有些 utf8mb4 的表默认排序规则 ...

  5. 关于ORACLE的SQL语句拼接、替换、截取、排序,联表等...~持续汇总~

     先看一下所有的数据.这里全部为VARCHAR2(255). 字段拼接 在所有的性别后面加% 字段替换,把性别TPF_SEX去除百分号% 字段截取 字段截取+拼接 字段替换,这里把百分号%替换为空,也 ...

  6. YII关联字段并带搜索排序功能

    1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...

  7. MyBatis联表查询

    MyBatis逆向工程主要用于单表操作,那么需要进行联表操作时,往往需要我们自己去写sql语句. 写sql语句之前,我们先修改一下实体类 Course.java: public class Cours ...

  8. SQL语句分组排序,多表关联排序

    SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...

  9. [慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定

    写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程: 不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小: ...

随机推荐

  1. 第六课——UIDynamicAnimator

    今天我们要学习UIDynamicAnimator 仿真物理学 . UIKit 力学(Dynamics) 和动态效果(Motion Effects) . 创建力学基本流程: 创建运动管理 创建运动行为( ...

  2. 如何用javac 和java 编译运行整个Java工程 (转载)【转】在Linux下编译与执行Java程序

    如何用javac 和java 编译运行整个Java工程 (转载)  http://blog.csdn.net/huagong_adu/article/details/6929817 [转]在Linux ...

  3. 后缀自动机&序列自动机综合

    好像序列自动机还没有写过- 串长为n的串共有n+1个节点,除了串中的n个节点,还有一个空的根节点放在串首.每个节点至多有26条出边,每条边连向它之后的第一个字符. 串中的任意一个子序列对应了一条根到某 ...

  4. DataReader用法

    一.DataReader含义 DataReader相比于DataSet,DataReader是一个抽象类,所以不能用DataReader DR = new DataReader(),来构造函数创建对象 ...

  5. 去掉Win7资源管理器左侧导航窗格中的收藏夹、库等的方法

    去掉Win7资源管理器的收藏夹/库/家庭组/网络的方法 将Windows 7资源管理器左侧导航窗格中的收藏夹.库.家庭组.网络全部去掉,只剩下计算机, 以收藏夹为例作简要说明. 首先打开注册表编辑器, ...

  6. 053医疗项目-模块五:权限设置-将用户操作权限写入Session

    权限管理指的是用户授权,与拦截器没有关系.拦截器只是一个技术,也可以用别的技术来实现的.别人问你权限管理,可不要和人家说什么拦截器.要说用户授权 前一篇文章是把实现了不同的用户呈现不用的菜单.这一篇文 ...

  7. 由于 ASP.NET 进程标识对全局程序集缓存没有读权限,因此未能执行请求。错误: 0x80131902

    由于 ASP.NET 进程标识对全局程序集缓存没有读权限,因此未能执行请求.错误: 0x80131902 分类: c#2013-06-17 10:22 89人阅读 评论(0) 收藏 举报 ASP.NE ...

  8. zabbix_proxy安装[yum mysql5.6]

      安装mysql rpm -ivh http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm   修改mysql配置: [m ...

  9. 利用javascript对提交数据验证

    优点:提交前验证.在客户端进行. <html> <head> <script language="javascript"> function c ...

  10. Java程序设计的DOS命令基础

    Java程序设计的DOS命令基础 用户使用操作系统和软件有两种方式:命令行界面(Command Line Interface,CLI)和图形界面(Graphical User Interface,GU ...