问题描述
我下面有这段代码,我在互联网上的某个地方看到过,但是它仅在存在一个标题或行的情况下起作用。
我希望如果存在两行,它将进行验证。让我们说我有名称和日期的标头,如果名称和日期数据重复,则会引发验证消息,重复数据无法保存
var duplicated = function(store,number,value)
{
var found = false;
store.each(function(record)
{
if(found = (record.data[number]==value) ? true : false){return false};
}
)
return found;
}
我试图操纵这段代码,但是我不能再做了。
我仍然无法弄清楚。如果行上的两个数据已经存在并且将被保存,则将对其进行验证,因为它具有两个重复的行(两个重复的数据也如上所述)。
解决方法
如果您需要检查唯一的夫妇姓名和日期,请向编辑器添加验证器:
columns: [
{text: 'Name',dataIndex: 'name',getEditor: function(record) {
return {
xtype: 'textfield',validator: function (val) {
const errMsg = 'Not unique';
let isExist = false;
store.each(function(rec){
if(rec.get('name') === val && record.get(date) === rec.get('date')){
isExist = true;
return false;
}
});
return val && !isExist ? true: errMsg ;
}
}
}
},{text: 'Name',getEditor: function(record) {
return {
xtype: 'datefield',validator: function(val) {
const errMsg = 'Not unique';
let isExist = false;
store.each(function(rec){
if(rec.get('date') === val && record.get(name) === rec.get('name')){
isExist = true;
return false;
}
});
return val && !isExist ? true: errMsg ;
}
}
}
}
]
您可以更漂亮地重做此操作,但希望这个主意很清楚。