私の剣道グリッドには、デフォルトの「新しいレコードを追加」ボタンがあり、インラインで編集できるように設定されています。レコードをデータベースに挿入することができましたが、ユーザーがこの新しいレコードを更新すると、IDが失われます。
私のコードは次のようになります:
var dataSource = new kendo.data.DataSource(
{
transport: {
read: {
url: '/Reports/Manage/Reports'
},
create: {
url: function (options) {
debugger;
// Ajax call to create a new record in the database
$.ajax(
{
type: 'POST',
url: '/Reports/Manage/CreateNewReport',
data: { name: options.name },
success: function (response) {
私はここで何かをしなければなりませんか?
return;
},
error: function (repsonse) {
alert("Manage: CreateNewReport -> Ajax Error!");
}
});
return;
},
dataType: "json"
},
update: {
url: function (options) {
// Ajax call to update the Report Name in the database.
$.ajax(
{
type: 'POST',
url: '/Reports/Manage/UpdateReportName',
data: { reportId: options.reportId, name: options.name },
success: function (response) {
// do nothing
// alert("Successfully Saved Note.");
},
error: function (repsonse) {
alert("Manage: UpdateReportName -> Ajax Error!");
}
});
return;
},
dataType: "json"
}
},
pageSize: 15,
height: 500,
data: reports,
schema:
{
model:
{
id: 'reportId',
fields:
{
name: { editable: true, validation: { required: true } },
}
}
}
});
$reports.kendoGrid(
{
dataSource: dataSource,
pageable: {
refresh: true,
pageSizes: true
},
toolbar: ["create"],
columns:
[
{ field: 'name', title: 'Report', sortable: true },
{ command: ["edit", "destroy"], title: " ", width: "180px", }
],
editable: "inline",
selectable: true,
change: function (e) {
// A new report was selected.
...
}
});