Kendo Grid使用POST获取远程数据

时间:2016-08-10 13:56:14

标签: jquery kendo-ui kendo-grid

我有一个Kendo UI Grid,它从远程URL获取数据,但是使用的类型是POST而不是GET(这是一个要求)。

我正在使用HTML,JQUery,WEB API堆栈

要发送的数据基本上是转换为json对象的表单post值

    var oDs = new kendo.data.DataSource({
    type: "odata",
                   transport: {
                       read: ajaxUrl,
                       type: "POST",
                       dataType: "jsonp",
                       contentType: "application/json; charset=utf-8",
                       data: JSON.stringify(dataToSend)
                   },
                   schema: {
                       model: {
                           id: "userid",
                           fields: {
                               userid: { type: "string" },
                               username: { type: "string" },
                               age: { type: "string" },
                               email: { type: "string" },
                               status: { type: "string" }
                           }
                       }
                   },
                   pageSize: 20,
                   serverPaging: true,
                   serverSorting: true,
                   serverFiltering: true
               });
$("#gridResult").kendoGrid({
                    dataSource: oDs,
                    total: oDs.view().length,
                columns: [
                        { field: "userid", title: "User ID" },
                        { field: "username", title: "User Name" },
                        { field: "age", title: "Age" },
                        { field: "email", title: "Email" },
                        { field: "status", title: "Status" },
                    ],
                    noRecords: {
                        template: "No results found."
                    },
                }); 

我收到"无法加载资源:服务器响应状态为405(方法不允许)" 错误。 Web API控制器方法是使用HTTPPOST作为HTTP Verb开发的。 如果我使用ajax调用单独获取数据并将该数据分配给kendo ui网格数据,那么它可以工作。这里的问题是客户方面的一切。有超过10000+的记录,它正在阻塞系统。 我希望Paging和filter是服务器端,数据是使用POST而不是GET获取的。请指导我。我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

DataSource配置已应用type:"odata"设置。这会强制执行GET请求类型。请删除dataSource type以获得所需的结果。您可能需要设置schema.dataschema.total,具体取决于确切的服务器响应结构。

http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-schema.data

http://docs.telerik.com/kendo-ui/api/javascript/data/datasource#configuration-schema.total