首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >System.FormatException: p0 : Wa -输入字符串的格式不正确。jqGrid错误filteredQuery

System.FormatException: p0 : Wa -输入字符串的格式不正确。jqGrid错误filteredQuery
EN

Stack Overflow用户
提问于 2013-03-08 05:25:46
回答 1查看 430关注 0票数 0

我正在学习Oleg的一个示例,该示例使用jqGrid中的filterToolbar来执行服务器端搜索/过滤。在搜索名称时,在filteredQuery.Count()行抛出错误,但似乎与FormatMapping有关。当我执行"eq“-相等搜索时,我没有得到这个错误,但当我执行"cn”-包含搜索时,我得到了这个错误。这看起来像是格式化字符串有问题,但这段代码在取自它的示例代码中工作得很好。我使用的是ASP.NET mvc4,如果有任何帮助,我将不胜感激。谢谢!!

代码语言:javascript
运行
复制
public JsonResult DynamicGridData(string sidx, string sord, int page, int rows, bool _search, string filters)
    {
        var context = new NonTaxContext();
        var objectContext = ((IObjectContextAdapter)context).ObjectContext;
        var set = objectContext.CreateObjectSet<Team>();

        var serializer = new JavaScriptSerializer();

        Filters f = (!_search || string.IsNullOrEmpty(filters)) ? null : serializer.Deserialize<Filters>(filters);

        ObjectQuery<Team> filteredQuery =
        (f == null ? (ObjectQuery<Team>)set : f.FilterObjectSet((ObjectQuery<Team>)set));

        filteredQuery.MergeOption = MergeOption.NoTracking; // we don't want to update the data

        var totalRecords = filteredQuery.Count();

        var pagedQuery = filteredQuery.Skip("it." + sidx + " " + sord, "@skip",
                                            new ObjectParameter("skip", (page - 1) * rows))
                                     .Top("@limit", new ObjectParameter("limit", rows));

        // to be able to use ToString() below which does NOT exist in the LINQ to Entity
        var queryDetails = (from item in pagedQuery
                            select new { item.TeamId, item.Code, item.Name }).ToList();

        return Json(new
        {
            total = (totalRecords + rows - 1) / rows,
            page,
            records = totalRecords,
            rows = (from item in queryDetails
                    select new[] {
                                    item.TeamId.ToString(),
                                    item.Code,
                                    item.Name
                                }).ToList()
        });
    }

private static readonly string[] FormatMapping = {
        "(it.{0} = @p{1})",                 // "eq" - equal
        "(it.{0} <> @p{1})",                // "ne" - not equal
        "(it.{0} < @p{1})",                 // "lt" - less than
        "(it.{0} <= @p{1})",                // "le" - less than or equal to
        "(it.{0} > @p{1})",                 // "gt" - greater than
        "(it.{0} >= @p{1})",                // "ge" - greater than or equal to
        "(it.{0} LIKE (@p{1}+'%'))",        // "bw" - begins with
        "(it.{0} NOT LIKE (@p{1}+'%'))",    // "bn" - does not begin with
        "(it.{0} LIKE ('%'+@p{1}))",        // "ew" - ends with
        "(it.{0} NOT LIKE ('%'+@p{1}))",    // "en" - does not end with
        "(it.{0} LIKE ('%'+@p{1}+'%'))",    // "cn" - contains
        "(it.{0} NOT LIKE ('%'+@p{1}+'%'))" //" nc" - does not contain
    };
EN

Stack Overflow用户

回答已采纳

发布于 2013-03-08 07:38:02

您使用的是什么技术堆栈?我个人不得不修改这个例子,因为我不能使用"LIKE“关键字,因为它是用Linq/Entity框架翻译的,并且我必须把我的"cn"换成

代码语言:javascript
运行
复制
 "(it.{0}.ToLower().Contains(@{1}.ToLower()))",// "cn" - contains
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15282062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档