Javascript 插入时复制剑道网格行
我有一个包含数据行的剑道网格,如果连续添加两个新行,则添加到网格中的第一行将在SQL db表中插入一条重复记录。我已经看到了在create事件中使用complete事件的建议:Javascript 插入时复制剑道网格行,javascript,c#,html,asp.net-mvc,kendo-ui,Javascript,C#,Html,Asp.net Mvc,Kendo Ui,我有一个包含数据行的剑道网格,如果连续添加两个新行,则添加到网格中的第一行将在SQL db表中插入一条重复记录。我已经看到了在create事件中使用complete事件的建议: transport: { read: UrlBase + "getAll", create: { url: UrlBase + "create", dataType: "jsonp", complete: functi
transport: {
read: UrlBase + "getAll",
create: {
url: UrlBase + "create",
dataType: "jsonp",
complete: function (e) {
$("#grid").data("kendoGrid").dataSource.read();
}
},
问题是,在我的代码中,我使用模型绑定将数据发送到服务器端,并且还需要维护网格结构:
<div class="k-pane">
@{
Html.Kendo().Grid(Model)
.Name("exampleGrid")
.Columns(columns =>
{
columns.Select().Width(60);
columns.Bound(c => c.exampleUniqueID).Hidden(true);
columns.Bound(c => c.example1ID).Hidden(true);
columns.Bound(c => c.example2ID).Hidden(true);
columns.Bound(c => c.example1CD).EditorTemplateName("exampleDropDown").Width(300);
columns.Bound(c => c.EffectiveDate).Format("{0:MM/dd/yyyy}").EditorTemplateName("EffectiveDatePicker");
columns.Bound(c => c.EndDate).Format("{0:MM/dd/yyyy}").EditorTemplateName("EndDatePicker");
columns.Bound(c => c.SortOrder);
columns.Bound(c => c.AddedBy);
columns.Bound(c => c.AddedOn);
columns.Bound(c => c.UpdatedBy);
columns.Bound(c => c.UpdatedOn);
})
.ToolBar(toolbar =>
{
toolbar.Create().Text("Add");
toolbar.Save().SaveText("Save");
})
.Editable(editable => editable.Mode(GridEditMode.InCell).DisplayDeleteConfirmation(false))
.Scrollable()
.Sortable()
.Events(e => e.SaveChanges("exampleGrid_onSaveChanges"))
.DataSource(datasource => datasource
.Ajax()
.Model(model =>
{
model.Id(d => d.exampleUniqueID);
model.Field(f => f.AddedBy).Editable(false);
model.Field(f => f.AddedOn).Editable(false);
model.Field(f => f.UpdatedBy).Editable(false);
model.Field(f => f.UpdatedOn).Editable(false);
}
)
.ServerOperation(false)
.Read(read => read.Action("ControllerAction", "ControllerName"))
.Create(create => create.Action("ControllerAction_Create", "ControllerName").Data("exampleGrid_onAdditionalData"))
.Update(update => update.Action("ControllerAction_Create", "ControllerName"))
.Destroy(delete => delete.Action("ControllerAction_Delete", "ControllerName"))
.Events(e => e.Error("exampleGridDS_onError"))
)
.Render();
}
</div>
由于网格在事件方法调用read、update、create等时使用箭头语法,并且在数据源的JSON格式定义中使用了complete事件,因此在上述网格中如何使用complete事件?如果不能,如何防止将重复项插入到sql表中?对数据源使用requestEnd事件。它将在传输方法之后调用 .Events(events => events.RequestEnd("add_a_javascript_method"))