我有一个剑道数据网格,如下图所示:剑道UI data.model.set失败,定制验证
$("#Grid").kendoGrid({
save: function (data) {
if (data.values.UnitPrice !== undefined) {
if(data.values.UnitPrice == null || data.values.UnitPrice == 0){
data.model.set("EstimatedItemCost", 0);
}
else{
console.log(data.values.UnitPrice * data.model.Quantity);
var test = data.model.set("EstimatedItemCost", data.values.UnitPrice * data.model.Quantity);
}
}
this.refresh();
},
....//other config
和它使用的数据源有一点自定义验证
var tdata = new kendo.data.DataSource({
schema: {
model: {
fields: {
UnitPrice: {
type: "number",
validation:{
min: 0,
conditionalRequired: function(input){
if(input.is("[name='UnitPrice']")){
input.attr("data-conditionalRequired-msg", "Unit Price is required");
//Some logic, without changing the result, simply return true
return true;
}
}
},
},
EstimatedItemCost: { type: "number" },
Remarks: { type: "string" }
}
}
},
好吧,现在这里是对问题的描述:
data.model.set("EstimatedItemCost", data.values.UnitPrice * data.model.Quantity);
没有设置值EstimatedItemCost
,它仍然是0。
也就是说:console.log(data.values.UnitPrice * data.model.Quantity);
已显示200的有效数字,但EstimatedItemCost
的值在set()
后仍然为0。
随着进一步钻探,我发现这是由于数据源中存在自定义验证 conditionalRequired
,我删除后,一切顺利!
但我真的需要验证逻辑,同时明确地设置模型的值。
谁能告诉我这个问题的原因是什么,我该如何解决?
任何帮助表示赞赏!谢谢!
EDIT1:
增加一些控制台日志,我发现set()
后,自定义验证函数运行一次! (和失败),我不知道是什么再次触发验证,但...
谢谢...我在此期间解决它,所以我无法测试它是否正确,但是我认为这是问题的原因!即:我给你一个接受! :) – shole 2014-09-25 09:05:21