or
function GetContactDS(){ var MyModel = kendo.data.Model.define({ id: "ID", fields: { __KEY: { type: "string" }, __STAMP: { type: "number" }, ID: { editable: false, nullable: true }, firstName: { type: "string" }, middleName: { type: "string" }, lastName: { type: "string" } }, }); var crudServiceBaseUrl = "http://127.0.0.1:8081/cors/Contact"; var MyDataSource = new kendo.data.DataSource({ transport: { read: function(options) { $.ajax( {
url: crudServiceBaseUrl + '/?$expand=ContactType', dataType: "json", data: options.data,
success: function(result) { options.success(result);
} }); }, update: function(options) { $.ajax( {
url: crudServiceBaseUrl + "/?$method=update", type: "POST", dataType: "json", data: kendo.stringify(options.data.models), success: function(result) { // notify the DataSource that the operation is complete options.success(result); } }); }, destroy: { url: crudServiceBaseUrl + "/?$method=delete", type: "GET" }, create: { url: crudServiceBaseUrl + "/?$method=update", dataType: "json", type: "POST" }, parameterMap: function(options, operation) { if (operation !== "read" && options.models) { return JSON.stringify({"__ENTITIES": options.models}); } } }, batch: true, pageSize: 30, schema: { model: MyModel, data: "__ENTITIES" } }); return MyDataSource;}{"__entityModel":"Contact","__COUNT":1,"__SENT":1,"__FIRST":0,"__ENTITIES":[{"__KEY":"7","__STAMP":9,"ID":7,"firstName":"jay","middleName":"a","lastName":"blue","ContactType":{"__KEY":"2","__STAMP":4,"ID":2,"name":"Home","contactCollection":{"__deferred":{"uri":"/rest/ContactType(2)/contactCollection?$expand=contactCollection"}}}}]}var ContactDS = GetContactDS(); $("#grid").kendoGrid({ selectable: "row", filterable: true, pageable: true, sortable: true, change: function(){ datamodel = this.dataItem(this.select()); ID = datamodel.ID }, dataSource: ContactDS, columns: [ { field: "ID" }, { field: "firstName" }, { field: "middleName" }, { field: "lastName" }, {field: "ContactType.name"} ] });$("#update").click(function () { datamodel.set("firstName", $("#firstName").val()); datamodel.set("lastName", $("#lastName").val()); datamodel.set("middleName", $("#middleName").val()); // datamodel.set("ContactType.__KEY",3); ContactDS.sync();{ "__ENTITIES": [{"__KEY":"7","__STAMP":14,"firstName":"jay","middleName":"a","lastName":"red","ContactType":{"__KEY":"2"}}]}[{"__KEY":"7","__STAMP":12,"ID":7,"firstName":"jay","middleName":"a","lastName":"blue","ContactType":{"__KEY":"3","__STAMP":2,"ID":3,"name":"Work","contactCollection":{"__deferred":{"uri":"/rest/ContactType(3)/contactCollection?$expand=contactCollection"}}}}]{ "__ENTITIES":}
Widgets may configured in the following two (2) ways:
$("#SearchFor").kendoAutoComplete({ minLength: 2, dataTextField: "FullText", dataSource: { type: "json", serverFiltering: true, serverPaging: true, pageSize: 20, filter: { field: "FullText", operator: "contains", value: $("#SearchFor").val() }, schema: { data: "data", count: "count" }, transport: { read: applicationPath() + "/Home/SearchForStuff" } } });@( try { @Html(.Kendo().Grid(Model) // etc. ) } catch(Exception e) { @Html.Raw("<pre>" + e + "</pre>"); })