需求描述:页面加载后,进行相关数据搜索,要求点击导出按钮后  下载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 获取筛选条件的更多相关文章

  1. JQGrid导出Excel文件

    系列索引 Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引 Web jquery表格组件 JQGrid 的使用 - 4.JQGrid参数.ColModel API.事件 ...

  2. shopnc 导出Excel数据问题实例 && ajax 获取当前值并传递

    任务:从商家中心导出数据,各个商品所属情况. 商品导出到Excel文件功能 /导出exel 功能make-in-lemon public function createExcelOp(){ $mode ...

  3. PHP导出excel文件之权限字段筛选导出

    因为导出excel时要过滤掉不是自身权限内的数据,权限有专门的字段,所以导出的数据要具体考量,数据库权限字段是MMId,因为登录的时候MMId已存入SESSION,所以导出的时候只要判断是否在此SES ...

  4. 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的路由方案,与原来的方案在使用上差别不 ...

  5. 获取一个表中的字段总数(mysql) Navicat如何导出Excel格式表结构 获取某个库中的一个表中的所有字段和数据类型

    如何获取一个表中的字段总数 1.function show columns from 表明: 结果 : 2.functiuon select count(*) from INFORMATION_SCH ...

  6. fastadmin 随笔 刷新表格数据 获取当前登录人信息 服务端导出Excel

    table.bootstrapTable('refresh',{url:'你的url'}); 获取当前登录人信息 $this->auth就能获取当前用户信息,比如$this->auth-& ...

  7. jqgrid 表格中筛选条件的多选下拉,树形下拉 ;文本框清除插件;高级查询多条件动态筛选插件[自主开发]

    /** * @@desc 文本框清除按钮,如果isAutoWrap为false当前文本框父级必须是relative定位,boostrap参考input-group * @@author Bear.Ti ...

  8. Python获取房价信息和导出EXCEL

    房价与生活息息相关,那么各地区房价情况和差别咋样呢?  可以打开网站或手机APP去查询一下,不过查看到的数据有限,很不过瘾~ 作为一个合格的程序员,要懂得用代码解决问题! 第一步:打开一个房产交易平台 ...

  9. 插件 ExcelWrite 导出Excel格式数据/获取图层

    使用ExcelWrite 插件可以导出Excel格式的数据: ExcelFile端口接 文件数据路径 最后面的是文件名,不用写格式 如果存储树形数据,需要 勾选 List To Row 选项: 附: ...

随机推荐

  1. Qt单元测试(QTestLib)

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt单元测试(QTestLib)     本文地址:http://techieliang.co ...

  2. Kafka Streams演示程序

    本文从以下六个方面详细介绍Kafka Streams的演示程序: Step 1: 下载代码 Step 2: 启动kafka服务 Step 3: 准备输入topic并启动Kafka生产者 Step 4: ...

  3. WASM

    WASM WebAssembly https://webassembly.org/ https://github.com/appcypher/awesome-wasm-langs https://me ...

  4. 【Python】Python中*args 和**kwargs的用法

    好久没有学习Python了,应为工作的需要,再次拾起python,唤起记忆. 当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值. 还是 ...

  5. queue队列

    1.作用:解耦,提高效率.队列就是一个容器,一个有顺序的容器. q.queue.Queue(maxsize=3): 生成一个队列的实例,并且最多存储3个元素 q.get(item,block=Ture ...

  6. 算法训练 Bus Tour

    问题描述 想象你是一个在Warsaw的游客,而且预订了一次乘车旅行,去城镇外看一些令人惊异的景点.这辆公共汽车首先围绕城镇行驶一段时间(一段很长的时间,由于Warsaw是一个大城市),把在各自旅馆的人 ...

  7. cf 443 D. Teams Formation](细节模拟题)

    cf 443 D. Teams Formation(细节模拟题) 题意: 给出一个长为\(n\)的序列,重复\(m\)次形成一个新的序列,动态消除所有k个连续相同的数字,问最后会剩下多少个数(题目保证 ...

  8. POJ. 2253 Frogger (Dijkstra )

    POJ. 2253 Frogger (Dijkstra ) 题意分析 首先给出n个点的坐标,其中第一个点的坐标为青蛙1的坐标,第二个点的坐标为青蛙2的坐标.给出的n个点,两两双向互通,求出由1到2可行 ...

  9. Delight for a Cat

    Time Limit: 1000 ms Memory Limit: 512 MB Description ​ 从前,有一只懒猫叫CJB.每个小时,这只猫要么在睡觉,要么在吃东西,但不能一边睡觉一边吃东 ...

  10. java 实现多个接口 方法重名的解决办法——内部类

    package com.kk.innerClass; /** * 通过内部类实现接口 * 解决多个接口中方法重名问题 * */interface Machine { void run();} clas ...