【问题标题】:Kendo Grid DatePicker Editor Template DateTime Change Value not workingKendo Grid DatePicker Editor Template DateTime Change Value not working
【发布时间】:2014-03-01 01:38:28
【问题描述】:

考虑以下代码,如果日期验证失败 WorkOrderDate

***********网格************ ***

columns.Bound(c => c.WorkOrderDetailsDate)
.Title("Estimated Start Date")
.EditorTemplateName("WorkOrderDetailsDate")

***********编辑器************ **

@model DateTime?
@(Html.Kendo().DatePicker()
    .Name("WorkOrderDetailsDate")
    .Value(Model == null ? DateTime.Now.Date : ((DateTime)@Model).Date)
    .Events(d=>d.Change("TaskDateValidate"))
)

************ *JavaScript********** *

function TaskDateValidate(e)
        {

            if ($("#workOrder_EstStartDate").val() != null && $("#workOrder_EstStartDate").val() != "") {                
                var workDate = kendo.parseDate($("#workOrder_EstStartDate").val());
                var taskDate = kendo.parseDate(kendo.toString(this.value(), 'd'));

                if (taskDate < workDate)
                {

                    showMessage("Task date should be after work order Date");                   
                    this.value(""); <-----this is not working want to set to empty to force user to select date again
                    this.value("28/02/2014");<---this is not working as well...
                }
            }

        }

请就这个问题提出建议 回复

沙兹

【问题讨论】:

  • 如果this.value(""); 不起作用,则意味着this 没有指向日期选择器。我认为这是因为日期选择器在网格中。在浏览器中放置一个断点并检查this 指向的位置。

标签: kendo-ui kendo-grid kendo-asp.net-mvc


【解决方案1】:

我自己找到了解决方案...

//Add validation on Grid
            (function ($, kendo) {

                $.extend(true, kendo.ui.validator, {
                    rules: {
                        greaterdate: function (input) {
                            if (input.is("[data-val-greaterdate]") && input.val() != "") {
                                var date = kendo.parseDate(input.val()),
                                    earlierDate = kendo.parseDate($("[name='" + input.attr("data-val-greaterdate-earlierdate") + "']").val());
                                return !date || !earlierDate || earlierDate.getTime() < date.getTime();
                            }

                            return true;
                        },//end of greaterdate
                        shorterdate: function (input) {
                            if (input.is("[data-val-shorterdate]") && input.val() != "") {
                                var date = kendo.parseDate(input.val()),
                                    laterDate = kendo.parseDate($("[name='" + input.attr("data-val-shorterdate-laterdate") + "']").val());
                                return !date || !laterDate || laterDate.getTime() > date.getTime();
                            }
                            return true;
                        },//end of shorter date

                        // custom rules
                        taskdate: function (input, params) {

                            if (input.is("[name=WorkOrderDetailsDate]")) {

                                //If the input is StartDate or EndDate
                                var container = $(input).closest("tr");
                                var tempTask = container.find("input[name=WorkOrderDetailsDate]").data("kendoDatePicker").value();
                                var tempWork = $("#workOrder_EstStartDate").val();

                                var workDate = kendo.parseDate(tempWork);
                                var taskDate = kendo.parseDate(tempTask);
                                if (taskDate < workDate) {
                                    return false;
                                }
                            }

                            //check for the rule attribute
                            return true;
                        }

                    }, //end of rule                       
                    messages: {
                        greaterdate: function (input) {
                            return input.attr("data-val-greaterdate");
                        },
                        shorterdate: function (input) {
                            return input.attr("data-val-shorterdate");
                        },
                        taskdate: function (input) {
                            return "Task date must be after work date!";
                        },
                    }
                });
            })(jQuery, kendo);

【讨论】:

    猜你喜欢
    • 2022-12-27
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    • 2015-04-22
    • 2017-03-03
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    相关资源
    最近更新 更多