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. 千位分隔符(js 实现)

    最近被同事问到js如何实现给长数字添加千位分隔符,即 1344444 ---> 13,444,444 这是一个很常见的前端面试题.看起来简单,刚开始我都懒得写. 仔细一想,挺考逻辑的,实现方法有 ...

  2. shipyard安装

    1.Start an data volume instance of RethinkDB: # docker run -it -d --name shipyard-rethinkdb-data \ - ...

  3. Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)

    在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...

  4. WPF ListView和ListBox等双击事件问题

    上两篇文章中说双击行获取不到当前数据对象问题, http://www.cnblogs.com/ligl/p/5636899.html http://www.cnblogs.com/ligl/p/562 ...

  5. 我的微型工作流引擎-功能解析及API设计

    一.前言 上一篇我给大家介绍了我的工作流的模型和基本的设计,这篇我想详细说明下我这款工作流的功能及使用示例.这款工作流主要是面向开发者设计的,为了先让大家有个全局的认识,局部功能的设计实现就不细说了, ...

  6. 准标识符(Quasi-dientifier, QI)

    Quasi-identifier From Wikipedia, the free encyclopedia Quasi-identifiers are pieces of information t ...

  7. ASimpleCache使用感受

    一.简介 ASimpleCache只能作为一份教程,一个学习样板,不能当真把它当回事. 作者杨福海,Afinal框架也是他创造的. 可是我读ASimpleCache的900行代码时,发现各种难看,并且 ...

  8. DLL编写教程

    本文对通用的DLL技术做了一个总结,并提供了源代码打包下载,下载地址为: http://www.blogjava.net/Files/wxb_nudt/DLL_SRC.rar   DLL的优点 简单的 ...

  9. 【jQuery EasyUI系列】 创建展开行明细编辑表单的CRUD应用

    当切换数据网络格局(datagrid view)到detailview,用户可以展开一行来显示一些行的明细在行下面,这个功能允许您为防止在明细行面板中的编辑表单提供一些合适的布局. 步骤1.在HTML ...

  10. RabbitMQ官方中文入门教程(PHP版) 第四部分:路由(Routing)

    路由(Routing) 在前面的教程中,我们实现了一个简单的日志系统.可以把日志消息广播给多个接收者. 本篇教程中我们打算新增一个功能——使得它能够只订阅消息的一个字集.例如,我们只需要把严重的错误日 ...