Asp.net 剑道批量编辑中自动完成的验证

Asp.net 剑道批量编辑中自动完成的验证,asp.net,asp.net-mvc,razor,kendo-ui,kendo-grid,Asp.net,Asp.net Mvc,Razor,Kendo Ui,Kendo Grid,我正在使用kendoGridbatch editing,其中我通过Editortemplate使用了AutoComplete,如下所示: @(Html.Kendo().AutoComplete() .Name("AccountTransactionItemHead") .DataTextField("Value_AccountTransactionItemHead") //.DataValueField("HeaderID")

我正在使用kendo
Grid
batch editing
,其中我通过Editortemplate使用了
AutoComplete
,如下所示:

@(Html.Kendo().AutoComplete()
          .Name("AccountTransactionItemHead")
          .DataTextField("Value_AccountTransactionItemHead")
          //.DataValueField("HeaderID")
          .HtmlAttributes(new { style = "width:250px" })
          .Filter("contains")

          //.AutoBind(true)
          .Events(events => events.Select("HeadComboSelect"))
          .MinLength(3)
          .DataSource(source =>
          {
              source.Read(read =>
              {
                  read.Action("GetHeadForHeadGrid", "Cashbox");
              })
              .ServerFiltering(true);
          })
)
    [Required(ErrorMessage="Please Enter Head")]
        public string AccountTransactionItemHead { get; set; }
        public int lkpQualifier { get; set; }
        public string lkpQualifierType { get; set; }
        [Required(ErrorMessage = "Please Enter Description")]
        [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Please Use letters only")]
        public string AccountTransactionItemDescription { get; set; }
        [Required(ErrorMessage = "Please Enter Currency")]
        [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Please Use letters only")]
        public string AccountTransactionItemCurrency { get; set; }  

 columns.Bound(p => p.AccountTransactionItemHead).Title("Head").EditorTemplateName("HeadAutoComplete").ClientTemplate("#=AccountTransactionItemHead#").Width(120);
    columns.Bound(p => p.AccountTransactionItemQualifier).Title("Trade Type").EditorTemplateName("AccountTransactionItemTradeDropDown").ClientTemplate("#=AccountTransactionItemQualifier#" + "<input type='hidden' class='lkpQualifierType' value='#=data.AccountTransactionItemQualifier#' />").Width(100);
    columns.Bound(p => p.TestHeader).ClientTemplate("#=TestHeader# <input type='hidden' class='AccountTransactionHeaderID' value='#=TestHeader#' />").Hidden(true);
    columns.Bound(p => p.AccountTransactionItemDescription).Title("Description").Width(130).ClientTemplate("#= AccountTransactionItemDescription#" + "<input type='hidden' class='AccountTransactionItemDescription'  value='#=data.AccountTransactionItemDescription#' />");
    columns.Bound(p => p.AccountTransactionItemCurrency).Width(80).Title("Currency").EditorTemplateName("CurrencyAutoComplete").ClientTemplate("#= AccountTransactionItemCurrency#" + "<input type='hidden' class='AccountTransactionItemCurrency'  value='#=data.AccountTransactionItemCurrency#' />");
    columns.Bound(p => p.AmtTransact).Width(100).Title("Amt Trans").ClientTemplate("#= AmtTransact#" + "<input type='hidden' class='AmtTransact'  value='#=data.AmtTransact#' />");
 $("#GridName").kendoValidator({
                 rules: {

                     AccountTransactionItemHead: {
                           required: true,
              productnamevalidation: function (input) {
                                        if (input.is(" [name='AccountTransactionItemHead']") && input.val() == ""){return false; //tigger validation show message }
                     //else valition passed value is not null or empty
                 return true;         
                         }//end of function                                
                     }// end of rules;
                 },
                 messages: {
                     productnamevalidation: function (input) {
                         // return the message text
                         return "please select the AutoComplete!";
                     }
                 }
             })
现在,如果我没有在这个字段中选择任何值,并且如果我移动到第二列,那么我需要对此字段进行验证,“请选择自动完成”。 我的
网格和视图模型如下所示:

@(Html.Kendo().AutoComplete()
          .Name("AccountTransactionItemHead")
          .DataTextField("Value_AccountTransactionItemHead")
          //.DataValueField("HeaderID")
          .HtmlAttributes(new { style = "width:250px" })
          .Filter("contains")

          //.AutoBind(true)
          .Events(events => events.Select("HeadComboSelect"))
          .MinLength(3)
          .DataSource(source =>
          {
              source.Read(read =>
              {
                  read.Action("GetHeadForHeadGrid", "Cashbox");
              })
              .ServerFiltering(true);
          })
)
    [Required(ErrorMessage="Please Enter Head")]
        public string AccountTransactionItemHead { get; set; }
        public int lkpQualifier { get; set; }
        public string lkpQualifierType { get; set; }
        [Required(ErrorMessage = "Please Enter Description")]
        [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Please Use letters only")]
        public string AccountTransactionItemDescription { get; set; }
        [Required(ErrorMessage = "Please Enter Currency")]
        [RegularExpression(@"^[a-zA-Z]+$", ErrorMessage = "Please Use letters only")]
        public string AccountTransactionItemCurrency { get; set; }  

 columns.Bound(p => p.AccountTransactionItemHead).Title("Head").EditorTemplateName("HeadAutoComplete").ClientTemplate("#=AccountTransactionItemHead#").Width(120);
    columns.Bound(p => p.AccountTransactionItemQualifier).Title("Trade Type").EditorTemplateName("AccountTransactionItemTradeDropDown").ClientTemplate("#=AccountTransactionItemQualifier#" + "<input type='hidden' class='lkpQualifierType' value='#=data.AccountTransactionItemQualifier#' />").Width(100);
    columns.Bound(p => p.TestHeader).ClientTemplate("#=TestHeader# <input type='hidden' class='AccountTransactionHeaderID' value='#=TestHeader#' />").Hidden(true);
    columns.Bound(p => p.AccountTransactionItemDescription).Title("Description").Width(130).ClientTemplate("#= AccountTransactionItemDescription#" + "<input type='hidden' class='AccountTransactionItemDescription'  value='#=data.AccountTransactionItemDescription#' />");
    columns.Bound(p => p.AccountTransactionItemCurrency).Width(80).Title("Currency").EditorTemplateName("CurrencyAutoComplete").ClientTemplate("#= AccountTransactionItemCurrency#" + "<input type='hidden' class='AccountTransactionItemCurrency'  value='#=data.AccountTransactionItemCurrency#' />");
    columns.Bound(p => p.AmtTransact).Width(100).Title("Amt Trans").ClientTemplate("#= AmtTransact#" + "<input type='hidden' class='AmtTransact'  value='#=data.AmtTransact#' />");
 $("#GridName").kendoValidator({
                 rules: {

                     AccountTransactionItemHead: {
                           required: true,
              productnamevalidation: function (input) {
                                        if (input.is(" [name='AccountTransactionItemHead']") && input.val() == ""){return false; //tigger validation show message }
                     //else valition passed value is not null or empty
                 return true;         
                         }//end of function                                
                     }// end of rules;
                 },
                 messages: {
                     productnamevalidation: function (input) {
                         // return the message text
                         return "please select the AutoComplete!";
                     }
                 }
             })
[必需(ErrorMessage=“请输入标题”)]
公共字符串AccountTransactionItemHead{get;set;}
公共整数lkpQualifier{get;set;}
公共字符串LKPQalifierType{get;set;}
[必需(ErrorMessage=“请输入说明”)]
[RegularExpression(@“^[a-zA-Z]+$”,ErrorMessage=“请仅使用字母”)]
公共字符串AccountTransactionItemDescription{get;set;}
[必需(ErrorMessage=“请输入货币”)]
[RegularExpression(@“^[a-zA-Z]+$”,ErrorMessage=“请仅使用字母”)]
公共字符串AccountTransactionItemCurrency{get;set;}
columns.Bound(p=>p.AccountTransactionItemHead).Title(“Head”).EditorTemplateName(“HeadAutoComplete”).ClientTemplate(“#=AccountTransactionItemHead”)宽度(120);
columns.Bound(p=>p.AccountTransactionItemQualifier).Title(“交易类型”).EditorTemplateName(“AccountTransactionItemTradeDropDown”).ClientTemplate(“#=AccountTransactionItemQualifier#“+”)。宽度(100);
columns.Bound(p=>p.TestHeader).ClientTemplate(“#=TestHeader#”).Hidden(true);
columns.Bound(p=>p.AccountTransactionItemDescription).Title(“Description”).Width(130).ClientTemplate(“#=AccountTransactionItemDescription”#“+”);
columns.Bound(p=>p.AccountTransactionItemCurrency).Width(80).Title(“Currency”).EditorTemplateName(“CurrencyAutoComplete”).ClientTemplate(“#=AccountTransactionItemCurrency”#“+”);
columns.Bound(p=>p.AmtTransact).Width(100).Title(“Amt-Trans”).ClientTemplate(“#=AmtTransact”+”);

我需要验证第一列,即
AccountTransactionItemHead

尝试使用剑道验证程序

1.//Grid Custom Validation            
                  $("#GridName").kendoValidator({
                 rules: {
                     // custom rules
                     custom: function (input, params) {

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

                             //If the input is AccountTransactionItemHead 
                            var autoComplete= input.val()
                             //check value is null or empty
                             if(autoComplete==null || autoComplete=="")
                              retrun false; //trigger validation

                         }

                         //check for the rule attribute
                         return true;
                     }
                 },
                 messages: {
                     custom: function (input) {
                         // return the message text
                         return "please select the AutoComplete!";
                     }
                 }
             })
 $("#GridName").kendoValidator({
                 rules: {

                     AccountTransactionItemHead: {
                           required: true,
              productnamevalidation: function (input) {
                                        if (input.is(" [name='AccountTransactionItemHead']") && input.val() == ""){return false; //tigger validation show message }
                     //else valition passed value is not null or empty
                 return true;         
                         }//end of function                                
                     }// end of rules;
                 },
                 messages: {
                     productnamevalidation: function (input) {
                         // return the message text
                         return "please select the AutoComplete!";
                     }
                 }
             })
  • 另一个网格验证

     $("#GridName").kendoValidator({
                     rules: {
    
                         AccountTransactionItemHead: {
                               required: true,
                  productnamevalidation: function (input) {
                                            if (input.is(" [name='AccountTransactionItemHead']") && input.val() == ""){return false; //tigger validation show message }
                         //else valition passed value is not null or empty
                     return true;         
                             }//end of function                                
                         }// end of rules;
                     },
                     messages: {
                         productnamevalidation: function (input) {
                             // return the message text
                             return "please select the AutoComplete!";
                         }
                     }
                 })
    
  • 使用Kenod.Ui.Validator回答

     $("#GridName").kendoValidator({
                     rules: {
    
                         AccountTransactionItemHead: {
                               required: true,
                  productnamevalidation: function (input) {
                                            if (input.is(" [name='AccountTransactionItemHead']") && input.val() == ""){return false; //tigger validation show message }
                         //else valition passed value is not null or empty
                     return true;         
                             }//end of function                                
                         }// end of rules;
                     },
                     messages: {
                         productnamevalidation: function (input) {
                             // return the message text
                             return "please select the AutoComplete!";
                         }
                     }
                 })
    
     //Add validation on Service rate 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;
                    }
    
                    // 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");
                    },                        
                    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()

  • 那么它现在是否显示
    请输入Head
    ?否。现在没有验证此消息,因为我正在使用EditorTemplate,但正在为其他人获取消息…除了正在使用EditorTemplate的字段它不起作用我只想知道此事件何时必须触发?因为在控制台中检查时它没有触发..如果auto的值complete为null或为空,则返回false,导致消息显示。。请选择自动完成..同时查看telerik验证链接。再次更新…容器上的us input.val()。因为容器用于拾取最近的tr。。。。as var container=$(输入)。最近的(“tr”);让我们