需求描述:页面加载后,进行相关数据搜索,要求点击导出按钮后  下载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. bpf程序

    bpf都是怎么起作用的? 记得bpf之前是绑定在bpf bpf作用在哪里呀?

  2. tomcat执行shutdown.sh进程残留的解决办法

    我们执行shutdown.sh指令的时候有时会发现进程并没有被关掉而是越来越多,这种情况一般是项目造成的,具体原因未去调查.由于tomcat自己有相应的保护机制,所以我们只需要强制结束其进程即可,下面 ...

  3. git & configs

    git & configs https://alvinalexander.com/git/git-show-change-username-email-address https://stac ...

  4. css的存在形式及优先级

    1. 查看源代码---在谷歌浏览器中右击-->点检查 2. CSS中style优先级,标签上的style优先,其它按照编写顺序越更新越优先,后面的会把前面的覆盖掉. 3. 如果想在其它的html ...

  5. [BZOJ4036] [HAOI2015]按位或

    传送门:https://lydsy.com/JudgeOnline/problem.php?id=4036 Description 刚开始你有一个数字0,每一秒钟你会随机选择一个[0,2^n-1]的数 ...

  6. 【BZOJ5329】【SDOI2018】战略游戏(圆方树,虚树)

    [BZOJ5329][SDOI2018]战略游戏(圆方树,虚树) 题面 BZOJ 洛谷 Description 省选临近,放飞自我的小Q无心刷题,于是怂恿小C和他一起颓废,玩起了一款战略游戏. 这款战 ...

  7. BZOJ4299 & CC FRBSUM:ForbiddenSum & BZOJ4408 & 洛谷4587 & LOJ2174:[FJOI2016]神秘数——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4299 https://www.lydsy.com/JudgeOnline/problem.php? ...

  8. BZOJ2337:[HNOI2011]XOR和路径——题解

    +++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...

  9. Linux之根文件系统的构建20160611

    说一下LINUX根文件系统的构建: 制作文件系统 1. 交叉编译busybox 安装:make install CONFIG_PREFIX=/work/nfs_root/fs_mini_mdev_ne ...

  10. 2017-7-18-每日博客-关于Linux下的软链接和硬链接.doc

    ln命令 该命令在文件之间创建链接.这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称.对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题. 如果链 ...