使用OData的Kendo UI Grid返回"查询参数' $ count'不受支持。"

时间:2016-09-15 19:31:29

标签: c# kendo-ui telerik kendo-grid kendo-asp.net-mvc

我正在尝试在Kendo Grid上实现OData来评估性能(我使用过Entity Framework,内联sql等)。在我的api项目中,我使用OData v4,因为这似乎是Telerik使用的。在我的api控制器中,我有:

[HttpGet]
[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]
[EnableCors(origins: "http://localhost:50264", headers: "*", methods: "*")]
public IQueryable<vNPISearch> Search(string id)
{
    return !String.IsNullOrEmpty(id) ? oandpService.GetPecosQueryable(id) : Enumerable.Empty<vNPISearch>().AsQueryable();
}

我的网格看起来像:

@(Html.Kendo().Grid<vNPISearch>()
        .Name("npi-grid")
        .Columns(columns =>
        {
            columns.Template(x => { }).ClientTemplate("#=GetPecosStatus(PecosNPI) #").Width(50);
            columns.Bound(x => x.ProviderFirstName).Title("First Name");
            columns.Bound(x => x.ProviderLastName).Title("Last Name");
            columns.Bound(x => x.ProviderBusinessLocationAddressCity).Title("City");
            columns.Bound(x => x.ProviderBusinessLocationAddressState).Title("State");
            columns.Bound(x => x.NPI).Title("NPI");
        })
        .DataSource(dataSource => dataSource
    .Custom()
    .Schema(sch =>
    {
        sch.Model(m =>
        {
            m.Id("NPI");
            m.Field(f => f.NPI).Editable(false);
            m.Field(f => f.ProviderFirstName).Editable(false);
            m.Field(f => f.ProviderLastName).Editable(false);
            m.Field(f => f.ProviderBusinessLocationAddressCity).Editable(false);
            m.Field(f => f.ProviderBusinessLocationAddressState).Editable(false);
        });
    })
    .Type("odata")
    .Transport(transport =>
    {
        transport.Read(read =>
        {
            read.Url("http://localhost:58242/api/PecosSearch/Search?id=" + Model.SearchTerm);
            read.DataType("json");
        });
    })
    .PageSize(20)
    .ServerPaging(true)
    .ServerSorting(true)
    .ServerFiltering(true)
)
        .Scrollable(scr => scr.Height("auto"))
        .Sortable()
        .Pageable(pageable => pageable
            .Refresh(true)
            .PageSizes(true)
            .ButtonCount(5))
)

当我转到搜索页面时,它有一个搜索文本框和网格。当我针对它运行查询时,我得到了&#34;查询参数&#39; $ count&#39;不受支持。&#34;

如果我删除Postman中的$ count,则API有效。

知道发生了什么事吗?

谢谢,

AJ

1 个答案:

答案 0 :(得分:0)

我认为您必须使用ToDataSourceResult扩展方法从服务器返回此值。

    using using Kendo.Mvc.Extensions;

    public ActionResult Search(string id, [DataSourceRequest] DataSourceRequest request){
        return !String.IsNullOrEmpty(id) ? oandpService.GetPecosQueryable(id).ToDataSourceResult(request) : Enumerable.Empty<vNPISearch>().AsQueryable().ToDataSourceResult(request);
    }

编辑:将集合更改为ActionResult将允许数据通过。