我有一个kendo UI Grid,因为我有两列StartDate和EndDate。 在进行内联编辑时,我想比较一下StartDate不应该大于EndDate。 我在下面的StartDate字段的自定义验证中这样做。 但是,var StartDate正在分配空值。
model: {
id: "BusinessAreaDivisionMappingId",
fields: {
BusinessAreaDivisionMappingId: { type: "number", editable: false, nullable: false },
StartDate: {
from: "BusinessAreaDivisionMappingEntity.StartDate", type: "date",
validation:
{
required: true,
dateComparisonValidation: function (input) {
debugger;
if (input && (input.attr("name") == "StartDate"|| input.attr("name") == "EndDate")) {
input.attr("data-dateComparisonValidation-msg", "Start Date cannot be more than End Date");
var startDate = input.closest(".k-edit-form-container").find("[name='StartDate']").data("kendoDatePicker");
var endDate = input.closest(".k-edit-form-container").find("[name='EndDate']").data("kendoDatePicker");
if (Date(startDate) > Date(endDate)) {
return false;
}
}
return true;
}
}
},
EndDate: { from: "BusinessAreaDivisionMappingEntity.EndDate", type: "date" }
}
}
答案 0 :(得分:2)
更新
这里有完整的工作示例:
我认为,如果用户无法选择无效值,那么这些值无效并且重新选择它们会更好。
如果您同意为日期添加自定义编辑器:
var dateEditor = function (container, options) {
var input = $('<input />');
input.appendTo(container)
.kendoDatePicker({
format: "dd.MM.yyyy"
});
var datePicker = input.data("kendoDatePicker");
switch (options.field) {
case "startDate":
if (options.model.finishDate) {
datePicker.max(options.model.finishDate);
}
break;
case "finishDate":
if (options.model.startDate) {
datePicker.min(options.model.startDate);
}
break;
}
};
在这里阅读自定义编辑器
http://docs.telerik.com/kendo-ui/api/javascript/ui/grid#configuration-columns.editor
如果您在为内联编辑器添加编辑器时遇到麻烦,请阅读该文章
Kendo Grid using inline editing and custom editor dropdown control