JQGrid 导出Excel 获取筛选条件
需求描述:页面加载后,进行相关数据搜索,要求点击导出按钮后 下载Excel文件。
思路:希望在点击【导出Excel】按钮时,获取到表格搜索时的filters内容。
在百度、api、jqgrid.js中翻阅后,找到解决属性postData
解决办法:$(window.frames[0].document).find("#grid-table").jqGrid("getGridParam","postData").filters
后台对filters转义的方法
namespace Common
{
/// <summary>
/// 公共方法类
/// </summary>
public class PublicFun
{
/// <summary>
/// 解析查询条件拼接成sql
/// </summary>
/// <param name="feilterArr">条件对象数组</param>
/// <returns></returns>
public static string GetFileterStr(string feilterArr)
{
//动态条件
string searchCase = string.Empty;
if (feilterArr==null||feilterArr.Equals(""))
{
return "";
}
var mStream = new MemoryStream(Encoding.UTF8.GetBytes(feilterArr)); //使用Encoding.Default中文时将会乱码
DataContractJsonSerializer dcjson = new DataContractJsonSerializer(typeof(jqGridFilter));
jqGridFilter filters = (jqGridFilter)dcjson.ReadObject(mStream);
if (filters.GroupOp == "AND")
{
searchCase += " 1=1 ";
foreach (jqGridFilterRules rules in filters.JqGridFilterRulesList)
{
switch (rules.Op)
{
case "cn":
searchCase += " and " + rules.Field + " like '%" + rules.Data + "%'";
break;
case "nc":
searchCase += " and " + rules.Field + " not like '%" + rules.Data + "%'";
break;
case "gt":
searchCase += " and " + rules.Field + ">'" + rules.Data + "'";
break;
case "ge":
searchCase += " and " + rules.Field + ">='" + rules.Data + "'";
break;
case "lt":
searchCase += " and " + rules.Field + "<'" + rules.Data + "'";
break;
case "le":
searchCase += " and " + rules.Field + "<='" + rules.Data + "'";
break;
case "eq":
searchCase += " and " + rules.Field + "='" + rules.Data + "'";
break;
case "true":
searchCase += " and " + rules.Field + " like '%" + rules.Data + "%'";
break;
case "ne":
searchCase += " and " + rules.Field + "!='" + rules.Data + "'";
break;
default:
break;
}
}
}
else
{
searchCase += " and (1=1";
foreach (jqGridFilterRules rules in filters.JqGridFilterRulesList)
{
switch (rules.Op)
{
case "cn":
searchCase += " or " + rules.Field + " like '%" + rules.Data + "%'";
break;
case "nc":
searchCase += " or " + rules.Field + " not like '%" + rules.Data + "%'";
break;
case "gt":
searchCase += " or " + rules.Field + ">'" + rules.Data + "'";
break;
case "ge":
searchCase += " or " + rules.Field + ">='" + rules.Data + "'";
break;
case "lt":
searchCase += " or " + rules.Field + "<'" + rules.Data + "'";
break;
case "le":
searchCase += " or " + rules.Field + "<='" + rules.Data + "'";
break;
case "eq":
searchCase += " or " + rules.Field + "='" + rules.Data + "'";
break;
case "true":
searchCase += " or " + rules.Field + "='" + rules.Data + "'";
break;
case "ne":
searchCase += " or " + rules.Field + "!='" + rules.Data + "'";
break;
default:
break;
}
}
searchCase += ")";
}
return searchCase;
} }
[DataContract]
class jqGridFilter
{
// {"groupOp":"AND","rules":[{"field":"email","op":"cn","data":"1"},{"field":"orderno","op":"ge","data":"2"}]}
private string groupOp = "AND";
private List<jqGridFilterRules> jqGridFilterRulesList;
[DataMember(Name = "groupOp")]
public string GroupOp
{
get { return groupOp; }
set { groupOp = value; }
}
[DataMember(Name = "rules")]
public List<jqGridFilterRules> JqGridFilterRulesList
{
get { return jqGridFilterRulesList; }
set { jqGridFilterRulesList = value; }
}
} [DataContract]
class jqGridFilterRules
{
private string field;
private string op;
private string data;
[DataMember(Name = "field")]
public string Field
{
get { return field; }
set { field = value; }
}
[DataMember(Name = "op")]
public string Op
{
get { return op; }
set { op = value; }
}
[DataMember(Name = "data")]
public string Data
{
get { return data; }
set { data = value; }
}
}
}
注:若使用上述方法解析filters
需将filters拼装成 {"groupOp":"AND","rules":[{"field":"ID","op":"true","data":"20170907"}]}
拼装的字符串中必须使用 英文的双引号 "
加一个js拼装的方法
var filList = JSON.parse($("#grid-table").jqGrid("getGridParam", "postData").filters).rules;
var fil = '{"groupOp":"AND","rules":[';
for (var i = , len = filList.length; i < len; i++) {
if (i != ) { fil += ','; }
fil += '{"field":"' + filList[i].field + '","op":"' + filList[i].op + '","data":"' + filList[i].data + '"}';
}
fil += ']}';
本人使用的是C#,至于后台的Excel导出可查看我的相关博客
JQGrid 导出Excel 获取筛选条件的更多相关文章
- JQGrid导出Excel文件
系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...
- shopnc 导出Excel数据问题实例 && ajax 获取当前值并传递
任务:从商家中心导出数据,各个商品所属情况. 商品导出到Excel文件功能 /导出exel 功能make-in-lemon public function createExcelOp(){ $mode ...
- PHP导出excel文件之权限字段筛选导出
因为导出excel时要过滤掉不是自身权限内的数据,权限有专门的字段,所以导出的数据要具体考量,数据库权限字段是MMId,因为登录的时候MMId已存入SESSION,所以导出的时候只要判断是否在此SES ...
- ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据
ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...
- 获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型
如何获取一个表中的字段总数 1.function show columns from 表明: 结果 : 2.functiuon select count(*) from INFORMATION_SCH ...
- fastadmin 随笔 刷新表格数据 获取当前登录人信息 服务端导出Excel
table.bootstrapTable('refresh',{url:'你的url'}); 获取当前登录人信息 $this->auth就能获取当前用户信息,比如$this->auth-& ...
- jqgrid 表格中筛选条件的多选下拉,树形下拉 ;文本框清除插件;高级查询多条件动态筛选插件[自主开发]
/** * @@desc 文本框清除按钮,如果isAutoWrap为false当前文本框父级必须是relative定位,boostrap参考input-group * @@author Bear.Ti ...
- Python获取房价信息和导出EXCEL
房价与生活息息相关,那么各地区房价情况和差别咋样呢? 可以打开网站或手机APP去查询一下,不过查看到的数据有限,很不过瘾~ 作为一个合格的程序员,要懂得用代码解决问题! 第一步:打开一个房产交易平台 ...
- 插件 ExcelWrite 导出Excel格式数据/获取图层
使用ExcelWrite 插件可以导出Excel格式的数据: ExcelFile端口接 文件数据路径 最后面的是文件名,不用写格式 如果存储树形数据,需要 勾选 List To Row 选项: 附: ...
随机推荐
- 探讨C++实现一个不可被继承的类
C#和Java都提供了一种机制让一个类不能被继承,如C#中的sealed关键字和Java的final关键字,然而C++程序员就没这么好命了.不过C++也可以模拟出这种效果,原理基于:子类的构造函数会自 ...
- 【.Net】浅谈C#中的值类型和引用类型
在C#中,值类型和引用类型是相当重要的两个概念,必须在设计类型的时候就决定类型实例的行为.如果在编写代码时不能理解引用类型和值类型的区别,那么将会给代码带来不必要的异常.很多人就是因为没有弄清楚这两个 ...
- 【刷题】BZOJ 4950 [Wf2017]Mission Improbable
Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛上豪赌输掉了一大笔钱,所以他需要再干一票.为此他需要你的帮助 ...
- BZOJ1011 [HNOI2008]遥远的行星 【奇技淫巧】
1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec Memory Limit: 162 MBSec Special Judge Submit: 5058 Solve ...
- BZOJ3675 [Apio2014]序列分割 【斜率优化dp】
3675: [Apio2014]序列分割 Time Limit: 40 Sec Memory Limit: 128 MB Submit: 3366 Solved: 1355 [Submit][St ...
- bzoj1010: [HNOI2008]玩具装箱toy(斜率优化DP)
Orz CYC帮我纠正了个错误.斜率优化并不需要决策单调性,只需要斜率式右边的式子单调就可以了 codevs也有这题,伪·双倍经验233 首先朴素DP方程很容易看出:f[i]=min(f[j]+(i- ...
- 删边(cip)
删边(cip) 给出一个没有重边和自环的无向图,现在要求删除其中两条边,使得图仍然保持连通. 你的任务是计算有多少组不合法的选边方案.注意方案是无序二元组. Sol 神题,无从下手啊. 考虑点dfs建 ...
- HTTP的消息结构?
参考:http://www.runoob.com/http/http-messages.html (1)请求数据包结构: 第一部分:请求行(数据包的第一行内容)[GET/HTTP/1.1] 请求行包含 ...
- HTMLajax跨域向服务器写入数据
1.XMLHttpRequest升级版已经实现了跨域请求.不过需要在后台设置:header("Access-Control-Allow-Origin:http://www.a.com&quo ...
- 题解 【luogu P2680 NOIp提高组2015 运输计划】
题目链接 题解 题意 一棵树上有\(m\)条路径,可以将其中一条边的权值改为0,问最长的路径最短是多少 分析 最短的路径最长自然想到二分最长路径,设其为\(dis\) 关键在于如何check chec ...