2

我正在尝试根据 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 函数上引发异常。

4

1 回答 1

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");
       }
    }            
});
于 2015-10-22T11:31:04.673 回答