Hi
I have implemented below custom validation rule. It works but it triggers a controller method twice once on Edit of cell and once Closure of cell. I just wanted it to be triggered on closure of cell. Can you please help me on this. Thank you
My property in in my Model is as below
[Remote("IsUniqueDisplayName", "Bookmark", AdditionalFields = "DocumentTypeId", ErrorMessage = "Display Name must be Unique.")]
public string DocumentTypeSortNameTitle { get; set; }
Custom validation rule implementation in javascript as below
(function ($, kendo) {
$.extend(true, kendo.ui.validator, {
rules: {
mvcremotevalidation: function (input) {
if (input.is("[data-val-remote]") && input.val() != "") {
var remoteURL = input.attr("data-val-remote-url");
var valid = true;
var td = input.parent('td');
if (td.hasClass("k-dirty-cell")) {
var found = false;
$.ajax({
async: false,
url: remoteURL,
type: "GET",
dataType: "json",
data: validationData(input, this.element),
success: function (result) {
found = result;
if (found)
valid = false;
else {
valid = true;
}
},
error: function () {
valid = false;
}
});
}
return valid;
}
return true;
}
},
messages: {
mvcremotevalidation: function (input) {
return input.attr("data-val-remote");
// return "Display Name must be Unique";
}
}
});
function validationData(input, context) {
var grid = $("#BookmarkDoctypeGrid").data("kendoGrid");
var currentData = grid.dataSource.data();
var uid = $("#BookmarkDoctypeGrid").find('.k-edit-cell').parent('tr').data('uid');
var dataItem = grid.dataSource.getByUid(uid);
var documentTypeId = dataItem.DocumentTypeId;
var fields = input.attr("data-val-remote-additionalFields").split(",");
var name = input.prop("name");
var prefix = name.substr(0, name.lastIndexOf(".") + 1);
var fieldName;
var data = {};
for (var i = 0; i < fields.length; i++) {
fieldName = fields[i].replace("*.", prefix);
if (fieldName == 'DocumentTypeId') {
data[fieldName] = documentTypeId;
} else
{
data[fieldName] = $("[name='" + fieldName + "']", context).val();
}
}
return data;
}
})(jQuery, kendo);
I have implemented below custom validation rule. It works but it triggers a controller method twice once on Edit of cell and once Closure of cell. I just wanted it to be triggered on closure of cell. Can you please help me on this. Thank you
My property in in my Model is as below
[Remote("IsUniqueDisplayName", "Bookmark", AdditionalFields = "DocumentTypeId", ErrorMessage = "Display Name must be Unique.")]
public string DocumentTypeSortNameTitle { get; set; }
Custom validation rule implementation in javascript as below
(function ($, kendo) {
$.extend(true, kendo.ui.validator, {
rules: {
mvcremotevalidation: function (input) {
if (input.is("[data-val-remote]") && input.val() != "") {
var remoteURL = input.attr("data-val-remote-url");
var valid = true;
var td = input.parent('td');
if (td.hasClass("k-dirty-cell")) {
var found = false;
$.ajax({
async: false,
url: remoteURL,
type: "GET",
dataType: "json",
data: validationData(input, this.element),
success: function (result) {
found = result;
if (found)
valid = false;
else {
valid = true;
}
},
error: function () {
valid = false;
}
});
}
return valid;
}
return true;
}
},
messages: {
mvcremotevalidation: function (input) {
return input.attr("data-val-remote");
// return "Display Name must be Unique";
}
}
});
function validationData(input, context) {
var grid = $("#BookmarkDoctypeGrid").data("kendoGrid");
var currentData = grid.dataSource.data();
var uid = $("#BookmarkDoctypeGrid").find('.k-edit-cell').parent('tr').data('uid');
var dataItem = grid.dataSource.getByUid(uid);
var documentTypeId = dataItem.DocumentTypeId;
var fields = input.attr("data-val-remote-additionalFields").split(",");
var name = input.prop("name");
var prefix = name.substr(0, name.lastIndexOf(".") + 1);
var fieldName;
var data = {};
for (var i = 0; i < fields.length; i++) {
fieldName = fields[i].replace("*.", prefix);
if (fieldName == 'DocumentTypeId') {
data[fieldName] = documentTypeId;
} else
{
data[fieldName] = $("[name='" + fieldName + "']", context).val();
}
}
return data;
}
})(jQuery, kendo);