2015-10-14 29 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

相关问题