JGrid中多条件查询filters的两种解析方法

第一种:

              string filters = HttpContext.Current.Request["filters"].ToString();
                if (!string.IsNullOrEmpty(filters))
                {
                    TextReader tr = new StringReader(filters);
                    JsonTextReader reader = new JsonTextReader(tr);
                    while (reader.Read())
                    {
                        if (reader.Depth == 1 && reader.TokenType == JsonToken.String)
                            groupOp = " " + (string)reader.Value + " ";
                        if (reader.Depth == 3 && reader.TokenType == JsonToken.String && reader.Path.Substring(9) == "field")
                            searchField = (string)reader.Value;
                        if (reader.Depth == 3 && reader.TokenType == JsonToken.String && reader.Path.Substring(9) == "op")
                            searchOper = (string)reader.Value;
                        if (reader.Depth == 3 && reader.TokenType == JsonToken.String && reader.Path.Substring(9) == "data")
                            searchString = (string)reader.Value;
                        if (reader.Depth == 2 && reader.TokenType == JsonToken.EndObject)
                            searchWhere(searchField, searchOper, searchString);
                    }
                }

第二种:

           string filters = HttpContext.Current.Request["filters"].ToString();
            //{"groupOp":"AND","rules":[{"field":"IMEI","op":"cn","data":"6"},{"field":"createtime","op":"ge","data":"2012-07-05"}]}
            if (!string.IsNullOrEmpty(filters))
            {    
                JObject o=(JObject)JsonConvert.DeserializeObject(filters);
                groupOp= " "+o["groupOp"].ToString()+" ";//留空格用来拼sql
                while (o["rules"].HasValues)
                {
                    searchWhere(o["rules"].First["field"].ToString(), o["rules"].First["op"].ToString(), o["rules"].First["data"].ToString());
                    o["rules"].First.Remove();
                }
            }

searchWhere方法:

public void searchWhere(string searchField,string searchOper,string searchString)
    {
        if (searchString != "")
        {
            switch (searchOper)
            {
                case "eq": sql_for_where += groupOp + searchField + "='" + searchString + "'";
                    break;
                case "ne": sql_for_where += groupOp + searchField + "!='" + searchString + "'";
                    break;
                case "le": sql_for_where += groupOp + searchField + "<=to_date('" + searchString + "','yyyy-mm-dd')";
                    break;
                case "ge": sql_for_where += groupOp + searchField + ">=to_date('" + searchString + "','yyyy-mm-dd')";
                    break;
                case "cn": sql_for_where += groupOp + searchField + " like '%" + searchString + "%'";
                    break;
                case "bw": sql_for_where += groupOp + searchField + " like '" + searchString + "%'";
                    break;
            }
        }
    }

展示一下:



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值