【问题标题】:Kendo grid filter + odata + Int64 field剑道网格过滤器 + odata + Int64 字段
【发布时间】:2012-12-18 09:37:21
【问题描述】:

我正在尝试根据 Kendo Grid 中的 Int64 字段过滤数据,它使用 Odata 作为服务。根据 Odata 规范,Int64 字段要求过滤器值末尾有一个额外的“L”,例如666423361622L。所以,我将剑道网格过滤器设置为:

{{ field: \"MyField\", operator: \"eq\", value: 666423361622L }}

,但这会引发错误:SyntaxError: identifier starts immediately after numeric literal ,显示在它不喜欢的 666423361622L。有没有办法可以格式化它,所以它会起作用?如果我使用没有 L (666423361622) 的值,它会在我的 Odata 服务中的 PraseInt 函数上引发异常。

【问题讨论】:

  • 删除 L 后会发生什么?
  • 如果我使用不带 L 的值,我的服务中的 ParseInt 会出现异常。因此,我需要将值格式化为 Int64。

标签: odata kendo-ui


【解决方案1】:

为了解决这个问题,我截获了 ajax 请求并修改了发送到 ODATA 服务的数据。只需手动附加“L”。像这样:

$(document).ajaxSend(function (e, jqxhr, settings) {
    var re = /(FIELDNAMEFORINT64\+(eq|ge|le)\+(\d)*)/g;
    var found = settings.url.match(re);

    if (found) {                
       for (var i = 0; i < found.length; i++) {
           settings.url = settings.url.replace(found[i], found[i] + "L");
       }
    }            
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多