この質問を回答なしで参照してください: Kendo Grid does not update the grid with new created id after creation
新しいリンクを作成すると、メソッドがヒットし、ID が設定された完全なアイテムが返されます。
[HttpPost]
public JsonResult Create(string LINK_TEXT, string HREF, string CATEGORY)
{
var link = new LinkDTO {LINK_TEXT = LINK_TEXT, HREF = HREF, CATEGORY = CATEGORY};
var insertedLink = LinkService.Create(link);
return Json(new[] {insertedLink}, JsonRequestBehavior.AllowGet);
}
クライアントでは、応答は次のとおりです。
{"ID":86,"LINK_TEXT":"Test2","HREF":"http://www.google.com","CATEGORY":"Category1"}
IDのみを返すことも試みました:
{"ID":86}
剣道データを調べると:
CATEGORY: "Category1"
HREF: "http://www.google.com"
ID: 0
LINK_TEXT: "Test2"
_events: Object
dirty: false
id: 0
parent: function (){return r}
uid: "4739cc3d-a270-44dd-9c63-e9d378433d98"
ID は 0 です。このリンクを編集しようとすると、新しいものと見なされるため、create が再度呼び出され、リンクが複製されます。
これが私のグリッド定義です:
$(document).ready(function () {
$("#link-results").kendoGrid({
dataSource: {
transport: {
create: {
url: '@Url.Action("Create", "Link")',
dataType: 'json',
type: 'POST'
},
read: {
url: '@Url.Action("Read", "Link")',
dataType: 'json',
type: 'GET',
data: {
CATEGORY: '@Model.CategoryName'
}
},
update: {
url: '@Url.Action("Update", "Link")',
dataType: 'json',
type: 'POST',
data: {
CATEGORY: '@Model.CategoryName'
}
},
destroy: {
url: '@Url.Action("Delete", "Link")',
dataType: 'json',
type: 'POST'
}
},
pageSize: 10,
schema: {
data: "Links",
total: "ResultCount",
model: {
id: "ID",
fields: {
ID: {type: "number"},
LINK_TEXT: { type: "string", required: true },
HREF: { type: "string", defaultValue: "", validation: { required: true } },
CATEGORY: { type: "string", defaultValue: '@Model.CategoryName', editable: false }
}
}
}
},
pageable: true,
toolbar: ["create"],
columns: [
{ field: "ID", hidden: true },
{ field: "LINK_TEXT", title: "Name", width: "40px"/*, template: "<a href='#=HREF#'>#=LINK_TEXT#</a>"*/ },
{ field: "HREF", title: "Link", width: "100px",filterable: false/*, template: "<a href='#=HREF#'>#=HREF#</a>"*/ },
{ field: "CATEGORY", title: "Category", width: "50px", filterable: false},
{
command: [
{ name: "edit", text: "" },
{ name: "destroy", text: "" }
],
title: " ",
width: "70px"
}
],
editable: "inline",
filterable: true,
sortable: "true"
});
これを機能させるためにパーツを追加しましたID: {type: "number"},
が、で定義されているため、フィールド定義でこれを必要としないことに気付きましたid: "ID"
。