2012-12-18 92 views
2

我試圖根據來自Kendo網格的Int64字段過濾數據,Kendo網格使用Odata作爲服務。根據Odata規範,Int64字段要求過濾器值在末尾具有附加「L」,如666423361622L。所以,我設置我的劍道格過濾器,如:Kendo網格過濾器+ odata + Int64字段

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

,但是這將引發一個錯誤:SyntaxError: identifier starts immediately after numeric literal ,在666423361622L顯示它不喜歡的。有沒有一種方法可以對此進行格式化,所以它會起作用?如果我使用沒有L的值(666423361622),它會在Odata服務中拋出PraseInt函數的異常。

+0

當您刪除L時會發生什麼? – SimonGates

+0

如果我使用沒有L的值,我會在我的服務中出現ParseInt異常。因此,我需要將值格式化爲Int64。 – andree

回答

0

爲了解決這個問題,我攔截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"); 
     } 
    }    
}); 
0

這是無效的JavaScript。嘗試發送它作爲字符串:

value: "666423361622L" 
+0

然後它將value視爲字符串並拋出異常:「Operator'eq'與操作數類型'Edm.Int64'和'Edm.String'不兼容' – andree

+2

根據規範http://www.odata.org/documentation/json格式「Edm.Int64 - 格式爲JSON字符串的64位整數」。我不知道「64位整數格式化爲JSON字符串」的含義。 –