我有一个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" }
}
}
UPDATE
这里完全有效的例子:
我认为用户体验真的更好的是无法选择无效值比较,看看这些值无效并重新选择它们。
如果您同意为日期添加自定义编辑器:
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