2015-10-14 27 views
0

我正在嘗試過濾我的OData查詢結果以僅檢索與當前記錄ID相關的活動記錄。我使用下面的代碼:在OData查詢中對Guid進行過濾時出錯

var RecordId = parent.Xrm.Page.data.entity.getId(); 
var options = "$select=Subject&$filter=RegardingObjectId eq guid'" + RecordId + "'"; 

然而,這將產生以下錯誤: enter image description here

我該如何正確對一個GUID過濾器?

編輯:

這是我的全部功能:

function retrieveActivities() { 
    ///<summary> 
    /// Retrieves Activities by passing a filter to the SDK.RestEndpointPaging.RetrieveRecords function 
    ///</summary> 
    clearRelatedGrid(); 
    var number = parseInt(numberOfActivitiesToRetrieve.options[numberOfActivitiesToRetrieve.selectedIndex].value, 10); 
    var RecordId = parent.Xrm.Page.data.entity.getId(); 
    var options = "$select=Subject&$filter=RegardingObjectId/Id eq (guid'" + RecordId + "'); 

    SDK.REST.retrieveMultipleRecords("ActivityPointer", options, retrieveActivitiesCallBack, function (error) { alert(error.message); }, ActivitiesRetrieveComplete); 
    } 
+0

被稱爲是需要的網址,就可以抓住它通過F12工具 – Alex

+0

我很抱歉,我不熟悉,我怎麼能得到的URL。我已經在Chrome上打開了開發人員工具。你能指導我到它的位置嗎? – user3340627

+0

uhm在你看到的錯誤行中,右側應該有一個鏈接。點擊它,它應該把你帶到「網絡」選項卡的相關行。右鍵點擊複製網址。編輯:很高興看到你解決了這個問題。 – Alex

回答

4

過濾通過查找推移fieldname/Id eq (guid'<your guid>')所以這應該工作:

var RecordId = parent.Xrm.Page.data.entity.getId(); 
var options = "$select=Subject&$filter=RegardingObjectId/Id eq (guid'" + RecordId + "')"; 
+0

謝謝,我試過了,但我的瀏覽器控制檯顯示:「Uncaught SyntaxError:Unexpected token ILLEGAL」for the line of code – user3340627

+0

用你用來查詢的完整ODATA url修正了這個問題,其他的錯誤 – Alex

+0

完成。請檢查我更新的問題。我嘗試刪除過濾器並再次測試,它工作正常。這就是爲什麼我得出結論這是過濾器的問題 – user3340627

1

我掙扎着同樣的事情,使用新的Web API v8.2。我知道這是問一年前,但任何人誰這個今天絆倒,這將有固定的問題,對我來說:

var options = "$select=Subject&$filter=RegardingObjectID eq " + RecordId; 

簡單直接比較GUID值(字符串)的對象ID。不要試圖告訴API它的指導。它現在足夠聰明,知道這一點。我希望這可以幫助別人使用v8.2。

看到這裏進行了較爲深入的解釋 https://community.dynamics.com/crm/b/conorssnippetdiary/archive/2015/12/03/web-api-preview-unrecognized-39-edm-string-39-literal

相關問題