2015-01-22 3 views
0

Я использую сетку Кендо, указывающую на контроллер OData веб-API ASP.NET. Мне интересно, можно ли настроить/перезаписать сгенерированный URL-адрес OData, который генерирует DataSource от Kendo? Моя проблема заключается в том, что мои поля даты - DateTimeOffset, и я пытаюсь сортировать по этим полям, однако поля модели Kendo поддерживают только строку/bool/number/date, ничего для DateTimeOffset. URL, который он генерирует для полей даты:Настроить URL-адрес OData Kendo DataSource?

http://localhost/api/odata/customers?%24inlinecount=allpages&%24top=10&%24filter=(CreatedDate+ge+datetime%272015-01-01T00%3A00%3A00%27), который не работает.

Оно должно быть:

http://localhost:900/api/odata/customers?%24inlinecount=allpages&%24top=10&%24filter=(CreatedDate+ge+DateTimeOffset% 272015-01-01T00% 3A00% 3A00% 27)

Можно ли заставить его использовать DateTimeOffset вместо этого?

ответ

0

Возможно, вы не используете правильный транспорт "odata". Попробуйте «odata-v4». Дополнительная информация доступна here.

0

Для моих ASP.NET Web API 2 в OData V4 контроллеров, я на самом деле нужен этот формат URL:

http://localhost:XX/odata/Things?$filter=DteTmOfsField eq 2012-12-03T07:16:23Z

И этот браузер работает очень хорошо для меня:

$(document).ready(function() { 
     $("#grid").kendoGrid({ 
      dataSource: { 
       type: "odata-v4", 
       transport: { 
        read: { 
         url: "/odata/Things/", 
         dataType: "json" 
        }, 
        parameterMap: function (options,type) { 
         var paramMap = kendo.data.transports.odata.parameterMap(options, type); 

         if (paramMap.$filter) { 

          paramMap.$filter = paramMap.$filter.replace(/datetime'([-0-9T:]{19})'/gi, "$1Z"); 

         } 
         paramMap.$count = true; 
         delete paramMap.$inlinecount; // <-- remove inlinecount parameter 
         delete paramMap.$format; // <-- remove format parameter 

         return paramMap; 
        } 
       }, 
+0

Насколько более конкретный ответ на желаемый формат URL-адреса OP, я думаю, что это изменение в моем выше javascript приведет вас туда: 'paramMap. $ filter = paramMap. $ filter.replace (/ datetime '([- 0-9T: ] {19}) '/ gi, "datetimeoffset' $ 1 '"); ' – bkwdesign

Смежные вопросы