GridView联表搜索,排序
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联表搜索,排序的更多相关文章
- MySQL的选则字段+联表+判断+排序(order by)
MySQL的选则字段+联表+判断+排序(order by) 两个表:1.成绩单 2.查询名单 目标: 1.选中全部字段,用于输出. 2.成绩单中有很多人的成绩,第一步是希望通过联表,只查查询名单上的人 ...
- Yii CGridView 关联表搜索排序实例
在这篇文章中,我准备讲解如何在CGridView中搜索或者排序关联表中的某一行,通过给Yii Blog demo添加一个list页面. 首先,检查你的blog demo里的protected\mode ...
- Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题
Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题 表更描述: 将mysql数据库中的worktask表添加ishaspic字段. 具体操作:(1)数据库worktask表新添是否有图片字 ...
- 解决MySQL联表时出现字符集不一样
mysql 建表时都会设置表的字符集和排序规则,通常是 utf8,不过我这边习惯建表的字符集是 utf8mb4,排序规则是 utf8mb4_unicode_ci.有些 utf8mb4 的表默认排序规则 ...
- 关于ORACLE的SQL语句拼接、替换、截取、排序,联表等...~持续汇总~
先看一下所有的数据.这里全部为VARCHAR2(255). 字段拼接 在所有的性别后面加% 字段替换,把性别TPF_SEX去除百分号% 字段截取 字段截取+拼接 字段替换,这里把百分号%替换为空,也 ...
- YII关联字段并带搜索排序功能
1.简介 从接触yii框架到现在已经快有两个月了,但是自己对yii框架的了解程度并不是很深,并没有系统地去学习,仅仅只是在做项目的时候遇到不懂得知识才去翻手册. 在上一个项目中因为需要将关联的表的字段 ...
- MyBatis联表查询
MyBatis逆向工程主要用于单表操作,那么需要进行联表操作时,往往需要我们自己去写sql语句. 写sql语句之前,我们先修改一下实体类 Course.java: public class Cours ...
- SQL语句分组排序,多表关联排序
SQL语句分组排序,多表关联排序总结几种常见的方法: 案例一: 在查询结果中按人数降序排列,若人数相同,则按课程号升序排列? 分析:单个表内的多个字段排序,一般可以直接用逗号分割实现. select ...
- [慢查优化]联表查询注意谁是驱动表 & 你搞不清楚谁join谁更好时请放手让mysql自行判定
写在前面的话: 不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程: 不要求每个人一定知道线上(现在或未来)哪张表数据量大,哪张表数据量小: ...
随机推荐
- 匹配字符串的KMP算法
其中next序列,表示子串的前后缀最大匹配长度. 例如对于字符串C[], next[i]表示子串c[0 .. i]中, 前缀与后缀的最大匹配长度. 举例如果子串是 abcuab, 其前缀是a, ab, ...
- delphi附带通用控件安装方法:
附带通用控件安装方法:----------基本安装1.对于单个控件,Componet-->install component..-->PAS或DCU文件-->install;2.对于 ...
- Delphi常用系统函数总结
Delphi常用系统函数总结 字符串处理函数 Unit System 函数原型 function Concat(s1 [, s2,..., sn]: string): string; 说明 与 S : ...
- .NET MVC控制器分离到类库的方法
在.ASP.NET MVC的开发中,我们创建完项目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在创建项目自动生成的内容上Model我们很容易分离成类库,所以 ...
- Android设置按钮为透明
设置一个按钮为透明, (1)修改配置文件 <Button android:id="@+id/btnAppMore" android:layout_width=&quo ...
- mac: vmware fusion中cent os启动假死的解决办法
环境: mac os X 10.9.2 + vmware 6.0.2 + cent OS 6.5 minimal 现象: Booting CentOS (2.6.32-358.e.l6.i686) i ...
- 关于base64编码的原理和实现
在前文 Data URI 应用场景小结 中我们提到了一个概念,叫做 base64编码,今天我们就来聊聊 base64编码,揭开它的神秘面纱. 一句话解释:Base64是一种基于64个可打印字符来表示二 ...
- 【BZOJ1003】【ZJOI2006】物流运输
1003: [ZJOI2006]物流运输trans Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2556 Solved: 1008[Submit] ...
- Xen虚拟化基本原理详解
标签:虚拟化 xen 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wangzan18.blog.51cto.com/80210 ...
- Uwp Windows10获取设备位置(经纬度)
先在Package.appxmanifest中配置位置权限 2. 创建LocationManager类 using System; using System.Collections.Generic; ...