2012-02-01 57 views
0

我有拥有的OData $select$filter检索字段使用ct_portfoliocode

的网址似乎并没有返回portfolioid.The网址是未定义称为"ct_portfolioid"滤波的JS。

var serverUrl = Xrm.Page.context.getServerUrl(); 
     var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc"; 
     var filter="ct_apxportfoliocodeSet?$select=ct_portfolioid&$filter=ct_portfoliocode eq '" + portfolioCode +"'"; 

     $.ajax({ 
      async: true, 
      type: "GET", 
      url: serverUrl + ODATA_ENDPOINT + "/"+filter, 
      contentType: "application/json; charset=utf-8", 
      dataType: 'json', 
      beforeSend: function (XMLHttpRequest) { 
       XMLHttpRequest.setRequestHeader("Accept", "application/json"); 
      }, 
+0

最新JayData版本能否请您具体谈谈你会得到什么作为响应?理想情况下用一些跟踪工具(例如fiddler)获取请求/响应的跟踪。 – 2012-02-01 19:29:19

+0

@VitekKarasMSFT感谢您的输入。我发现我更换了错误var filter =“ct_apxportfoliocodeSet?$ select = ct_portfolioid&$ filter = ct_portfoliocode eq%27”+ portfolioCode +“%27”; url现在返回portfolioid-谢谢! – 2012-02-01 21:05:57

回答

0

作为替代handcoding协议数据你可以给一个尝试JayData,让你一个高级别语义API的OData上用JavaScript语言查询和本地CRUD操作的支持。

使用JayData,您不必手动组装oData $filter, $sort, $select等表达式,此外您还可以使用原生JavaScript语法。

上面的查询可以用JayData实现要容易得多:

$data.YourContext.filter(function(a) {return a.ct_portfolicode==this.portfolioCode;}, {portfolioCode: YourValue}) 
.map(function(p) {return p.ct_portfolioid;}) 
.toArray(...); 

您可以从CodePlex