我有一个带有一个网格模型的网格面板。如何将主键设置为该网格存储,以便我可以防止重复值。我的模特是:
Ext.define('product',{
extend : 'Ext.data.Model',
fields: [{name: 'name',type: 'string'},
{name: 'column1', type: 'int'},
{name: 'column2', type: 'int'}]
associations: [{type: 'belongsTo',model: 'product',primaryKey: 'column1'}]
});
如何使用此主键防止两次输入相同的记录?!
答案 0 :(得分:0)
您无法使用Extjs在模型上“设置”主键。概念本身在图书馆中不存在。记录的ID必须是唯一的,但实际上没有什么能够强制执行它。我的问题是,当你添加重复记录时,你甚至想做什么?您是否希望根据密钥覆盖记录的值?你想要一个例外吗?
我能为您提供的最佳建议是在商店中使用“添加”事件,并使用以下代码填写:
var myStore = Ext.create("Ext.data.Store", {
listeners: {
add: function(store, records){
var checkRecords = store.getRange();//get the records to check against
//clean out the records from the set that were just added
for(var i = 0; i < records.length; i++)
Ext.Array.remove(checkRecords, records[i]);
for(var i = 0; i < checkRecords.length; i++)
{
for( var j = 0; j < records.length; j++)
{
if(checkRecords[i].get("primary_key") == records[j].get("primary_key"))
throw "Duplicate primary key: " + records[j].get("primary_key");
}
}
}
}
});
该代码将抛出异常,但不会停止添加记录。
答案 1 :(得分:-3)
idProperty怎么样?
如果在模型上设置idProperty,它就会充当主键。