Kendo ui 剑道网格日期选择器编辑器模板日期时间更改值不起作用

Kendo ui 剑道网格日期选择器编辑器模板日期时间更改值不起作用,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,考虑下面的代码,我想将grid datePicker列设置为空。如果日期验证失败,WorkOrderDate

考虑下面的代码,我想将grid datePicker列设置为空。如果日期验证失败,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"))
)
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...
                }
            }

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

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"))
)
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...
                }
            }

        }
***********JavaScript***************

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"))
)
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...
                }
            }

        }
函数TaskDateValidate(e)
{
如果($(“#工作订单(U EstStartDate”).val()!=null&$(“#工作订单(U EstStartDate”).val()!=”{
var workDate=kendo.parseDate($(“#workOrder_EstStartDate”).val();
var taskDate=kendo.parseDate(kendo.toString(this.value(),'d');
如果(任务日期<工作日期)
{
showMessage(“任务日期应在工单日期之后”);

这个.value(“”;在我自己找到了解决方案

//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);
//在网格上添加验证
(函数($,剑道){
$.extend(true,kendo.ui.validator{
规则:{
greaterdate:函数(输入){
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();
}
返回true;
},//较短日期的结束
//习惯规则
任务日期:函数(输入,参数){
if(input.is(“[name=workordedailsdate]”){
//如果输入是StartDate或EndDate
变量容器=$(输入).tr;
var testask=container.find(“输入[name=workordetailsdate]”).data(“kendoDatePicker”).value();
var tempWork=$(“#工作顺序_EstStartDate”).val();
var workDate=kendo.parseDate(tempWork);
var taskDate=kendo.parseDate(testask);
如果(任务日期<工作日期){
返回false;
}
}
//检查规则属性
返回true;
}
},//规则结束
信息:{
greaterdate:函数(输入){
返回input.attr(“数据值greaterdate”);
},
shorterdate:函数(输入){
返回input.attr(“data val shorterdate”);
},
任务日期:函数(输入){
return“任务日期必须在工作日期之后!”;
},
}
});
})(jQuery,剑道);
如果
此.value(“”;
不工作,则表示
不指向日期选择器。我认为这是因为日期选择器位于网格中。在浏览器中放置断点,并检查
指向的位置。