Фильтр Odata $ не получает значения - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть JS, в котором есть odata $select и $filter для извлечения поля с именем "ct_portfolioid" filtering с использованием ct_portfoliocode

Кажется, что URL не возвращает портфеля. URL не определен.

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");
            },

1 Ответ

0 голосов
/ 02 мая 2012

В качестве альтернативы данным протокола ручного кодирования вы можете попробовать JayData , который предоставляет вам высокоуровневый семантический API поверх OData с поддержкой JavaScript Language Query и нативными операциями 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(...);

Вы можете загрузить последнюю версию JayData с CodePlex

...