如何比较Kendo UI Grid中2行中的日期?

问题描述 投票:0回答:1

我有一个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" }
                }
            }
javascript kendo-ui kendo-grid kendo-asp.net-mvc
1个回答
2
投票

UPDATE

这里完全有效的例子:

http://dojo.telerik.com/IqeNA


我认为用户体验真的更好的是无法选择无效值比较,看看这些值无效并重新选择它们。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.