I've been buggered by this all day today.
I've got a Kendo grid in an MVC razor page running in AJAX mode with create and update actions calling a controller.
I've also got click-happy users that want to double-click the "update" button and are causing duplicate calls to the data service. I've tried various things, including disabling the buttons on RequestStart and RequestEnd but a double click continually reposts data.
The following code disables both the update and cancel button. inserting the k-state-disabled class and removing the action class replacing it with a dummy class. When the data request is done the classes are restored.
Is there a better solution than this:
.DataSource(ds=>ds
.Ajax()
//Brevity
.Events(events => events.Error("onValidationError"))
.Events(events => events.RequestStart("prs_RequestStart"))
.Events(events => events.RequestEnd("prs_RequestEnd"))
.Read(read => read.Action("ReadCreateProductVMs", "API", new { id = Model.Id }))
.Create(create => create.Action("CreateProductVM", "API"))
.Update(update => update.Action("UpdateProductVM", "API"))
))
<
script
>
function prs_RequestStart(e) {
var grid = $("#Grid");
grid.find(".k-grid-update").addClass("k-state-disabled").addClass("qmims-noUpdate").removeClass(".k-grid-update");
grid.find(".k-grid-cancel").addClass("k-state-disabled").addClass("qmims-noCancel").removeClass(".k-grid-cancel");
}
function prs_RequestEnd(e) {
var grid = $("Grid");
grid.find(".k-grid-noUpdate").removeClass("k-state-disabled").removeClass("qmims-noUpdate").addClass("k-grid-update");
grid.find(".k-grid-noCancel").removeClass("k-state-disabled").removeClass("qmims-noCancel").addClass("k-grid-cancel");
}
</
script
>