zoukankan      html  css  js  c++  java
  • 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; }
            }
        }
    }
    View Code

    注:若使用上述方法解析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 = 0, len = filList.length; i < len; i++) {
                if (i != 0) { fil += ','; }
                fil += '{"field":"' + filList[i].field + '","op":"' + filList[i].op + '","data":"' + filList[i].data + '"}';
            }
            fil += ']}';
    View Code

    本人使用的是C#,至于后台的Excel导出可查看我的相关博客

  • 相关阅读:
    C开发注意事项
    Teamcenter ITK
    Teamcenter SOA开发源码: 打印对象信息
    Teamcenter服务端开发环境配置
    Teamcenter中UID和对象之间相互转化
    Teamcenter 打开数据集
    Teamcenter中SOA调用user service
    63.display:none与visibility:hidden的区别?
    60.为什么要初始化CSS样式
    58.用纯CSS创建一个三角形的原理是什么?
  • 原文地址:https://www.cnblogs.com/GoCircle/p/7593071.html
Copyright © 2011-2022 走看看