Asp.net 剑道批量编辑中自动完成的验证
我正在使用kendoAsp.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")
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”);让我们