如何在 Kendo 网格/自定义验证器编辑中从 Kendo 模型访问 ID?
How to Access the ID from Kendo Model in KendoGrid / Custom validator editing?
我正在使用 Kendo 网格/自定义验证器编辑来 验证 网格中的列,实际上我正在尝试检查电子邮件是否已经存在是否在数据库中?为了实现它,我想获取该行的 ID。
例如参考其产品 table,所以在这种情况下,我会在验证函数中获取 ProductID ?
参考:
http://demos.telerik.com/kendo-ui/grid/editing-custom-validation
您可以通过检索 uid
获取 id,然后通过 dataSource.getByUid()
从数据源获取数据项。网格中的每一行都有一个由网格生成的唯一 uid
。
例如,参考 kendo 的演示,验证现在看起来像这样:
productnamevalidation: function (input) {
//get row and uid
var row = input.closest('tr')[0];
var uid = $(row).attr('data-uid');
//get data item and then its ProductID
var dataitem = dataSource.getByUid(uid);
console.log(dataitem);
console.log(dataitem.ProductID);
//continue doing validation
if (input.is("[name='ProductName']") && input.val() != "") {
input.attr("data-productnamevalidation-msg", "Product Name should start with capital letter");
return /^[A-Z]/.test(input.val());
}
return true;
}
这是他们的 demo,其中包含此代码,您可以打开控制台以查看正在打印的每个数据行及其所有模型属性。
您可以通过以下方式获取记录的 ID:
input[0].kendoBindingTarget.source.ID
例如:
emailUnique: function (input) {
if (input.is("[name=Email]") && input.val() !== "") {
input.attr("data-emailUnique-msg", "Email already exists");
return isEmailUnique(input.val(), input[0].kendoBindingTarget.source.ID);
}
return true;
}
奖励曲目,以防对某人有用:
function isEmailUnique(val, id) {
var data = YourGridDataSource; // If you don't have it, you may need something like $("#YourGrid").data().kendoGrid.dataSource
for (var i = 0; i < data.length; i++) {
if (data[i].ID != id && data[i].Email == val)
return false;
}
return true;
}
我正在使用 Kendo 网格/自定义验证器编辑来 验证 网格中的列,实际上我正在尝试检查电子邮件是否已经存在是否在数据库中?为了实现它,我想获取该行的 ID。
例如参考其产品 table,所以在这种情况下,我会在验证函数中获取 ProductID ?
参考: http://demos.telerik.com/kendo-ui/grid/editing-custom-validation
您可以通过检索 uid
获取 id,然后通过 dataSource.getByUid()
从数据源获取数据项。网格中的每一行都有一个由网格生成的唯一 uid
。
例如,参考 kendo 的演示,验证现在看起来像这样:
productnamevalidation: function (input) {
//get row and uid
var row = input.closest('tr')[0];
var uid = $(row).attr('data-uid');
//get data item and then its ProductID
var dataitem = dataSource.getByUid(uid);
console.log(dataitem);
console.log(dataitem.ProductID);
//continue doing validation
if (input.is("[name='ProductName']") && input.val() != "") {
input.attr("data-productnamevalidation-msg", "Product Name should start with capital letter");
return /^[A-Z]/.test(input.val());
}
return true;
}
这是他们的 demo,其中包含此代码,您可以打开控制台以查看正在打印的每个数据行及其所有模型属性。
您可以通过以下方式获取记录的 ID:
input[0].kendoBindingTarget.source.ID
例如:
emailUnique: function (input) {
if (input.is("[name=Email]") && input.val() !== "") {
input.attr("data-emailUnique-msg", "Email already exists");
return isEmailUnique(input.val(), input[0].kendoBindingTarget.source.ID);
}
return true;
}
奖励曲目,以防对某人有用:
function isEmailUnique(val, id) {
var data = YourGridDataSource; // If you don't have it, you may need something like $("#YourGrid").data().kendoGrid.dataSource
for (var i = 0; i < data.length; i++) {
if (data[i].ID != id && data[i].Email == val)
return false;
}
return true;
}