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

来源:互联网 发布:炒股必知 编辑:程序博客网 时间:2024/05/17 02:24

第一种:

              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;            }        }    }

展示一下:



原创粉丝点击