如何比较 Kendo UI 网格中一行的 2 列中的日期?

How to compare dates in 2 columns of a row in Kendo UI Grid?

我有一个 kendo UI 网格,因为我有 2 列 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" }
                }
            }

更新

这里是完整的工作示例:

http://dojo.telerik.com/IqeNA


我认为对于用户体验而言,不能够 select 无效值进行比较以查看这些值无效并重新 select 确实更好。

如果您同意为带有日期的列添加自定义编辑器:

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