kendoGrid 2013.1.319 CRUD使用OData通过ASP.NET MVC 4 web api控制器的一般问题

时间:2013-03-28 11:09:44

标签: kendo-ui

由于我已经尝试在kendoui论坛上写作,但我得到的答案是“购买许可证”报告错误,我问是否有人使用kendoGrid 2013.1.319遇到了同样的问题。因为我在“星期日测试应用程序”中使用它,所以根本不急!

我原来的消息是在剑道论坛上:

你好,

我已经使用最新版本更新了kendo网格,突然之间我的应用程序面临数据操作问题。问题似乎是位于客户端,因为我正确地接收了GET,PUT,POST和DELETE谓词的请求,但网格没有更新其状态。

我正在通过API服务使用ASP.NET MVC 4 OData实现。

例如:如果我删除2行并按保存,则进行DELETE调用,客户端网格会隐藏行,但如果我再次按save,则会一直调用删除。

同样的问题是在更新/创建时,单元格保留红色角落,保存后,数据仍然是第一次提交。

我注意到当我收到dataSource上的回调时:

requestEnd: function (e) {
            if (e.type === "update" || e.type === "create") {
                // Refresh data after changes
                this.read();
            }
        }

在插入或更新记录时,e.type始终未定义。

这是我的dataSource配置:

dataSource: {
            type: 'odata', // <-- Include OData style params on query string
            transport: {
                read: {
                    url: $("#contactsGrid").attr("data-api-crud"),
                    dataType: "json", // <-- The default is "jsonp".
                    type: "GET"
                },
                update: {
                    url: $("#contactsGrid").attr("data-api-crud"),
                    dataType: "json", // <-- The default is "jsonp".
                    type: "POST"
                },
                create: {
                    url: $("#contactsGrid").attr("data-api-crud"),
                    dataType: "json", // <-- The default is "jsonp".
                    type: "PUT"
                },
                destroy: {
                    url: function (data) {
                        return $("#contactsGrid").attr("data-api-crud") + "/" + data.Id;
                    },
                    dataType: "json", // <-- The default is "jsonp".
                    type: "DELETE"
                },
                parameterMap: kendo.data.transports.odata.parameterMap
            },
            schema: {
                // The array of repeating data elements (items)
                data: "Results",
                // The total count of records in the whole dataset. used for paging.
                total: "Count",
                model: {
                    id: "Id",
                    fields: {
                        Dealer: { type: "string", editable: true },
                        Address: { type: "string", editable: true }
                    }
                }
            },
            pageSize: 50,
            serverPaging: true,
            serverFiltering: true,
            serverSorting: true,
            requestEnd: function (e) {
                if (e.type === "update" || e.type === "create") {
                    // Refresh data after changes
                    this.read();
                }
            }
        }

1 个答案:

答案 0 :(得分:4)

Kendo UI团队刚刚发布了blogpost如何使用JayData库来简化数据源的配置。希望它会对你有所帮助。