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 选项: 附: ...
随机推荐
- Qt单元测试(QTestLib)
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt单元测试(QTestLib) 本文地址:http://techieliang.co ...
- Kafka Streams演示程序
本文从以下六个方面详细介绍Kafka Streams的演示程序: Step 1: 下载代码 Step 2: 启动kafka服务 Step 3: 准备输入topic并启动Kafka生产者 Step 4: ...
- WASM
WASM WebAssembly https://webassembly.org/ https://github.com/appcypher/awesome-wasm-langs https://me ...
- 【Python】Python中*args 和**kwargs的用法
好久没有学习Python了,应为工作的需要,再次拾起python,唤起记忆. 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. 还是 ...
- queue队列
1.作用:解耦,提高效率.队列就是一个容器,一个有顺序的容器. q.queue.Queue(maxsize=3): 生成一个队列的实例,并且最多存储3个元素 q.get(item,block=Ture ...
- 算法训练 Bus Tour
问题描述 想象你是一个在Warsaw的游客,而且预订了一次乘车旅行,去城镇外看一些令人惊异的景点.这辆公共汽车首先围绕城镇行驶一段时间(一段很长的时间,由于Warsaw是一个大城市),把在各自旅馆的人 ...
- cf 443 D. Teams Formation](细节模拟题)
cf 443 D. Teams Formation(细节模拟题) 题意: 给出一个长为\(n\)的序列,重复\(m\)次形成一个新的序列,动态消除所有k个连续相同的数字,问最后会剩下多少个数(题目保证 ...
- POJ. 2253 Frogger (Dijkstra )
POJ. 2253 Frogger (Dijkstra ) 题意分析 首先给出n个点的坐标,其中第一个点的坐标为青蛙1的坐标,第二个点的坐标为青蛙2的坐标.给出的n个点,两两双向互通,求出由1到2可行 ...
- Delight for a Cat
Time Limit: 1000 ms Memory Limit: 512 MB Description 从前,有一只懒猫叫CJB.每个小时,这只猫要么在睡觉,要么在吃东西,但不能一边睡觉一边吃东 ...
- java 实现多个接口 方法重名的解决办法——内部类
package com.kk.innerClass; /** * 通过内部类实现接口 * 解决多个接口中方法重名问题 * */interface Machine { void run();} clas ...