Extjs3.x中是store.getModifiedRecordes(),
用editgridpanel来获取被修改的记录,可是怎么也获取不到,深究才知道
store类的getUpdatedRecords 会通过 model类的三个条件
1,dirty == true 2, phantom !== true 3,isValid()
来确定一个record是否被更新过。条件1和3没问题,问题就出在了条件2上。
当一个record(model类的实例) 存在于服务器端数据库中时,其phantom 为false,否则为true,
对于Ext来说,通过model 类的idProperty属性指定的 数据域来判断该record是否存在于服务器端数据库。
idProperty默认值为id,即如果record中id值不为空,则phantom=fasle,否则为true。
解决方法:1 模型中添加一个id字段,给一个id属性。2 idProperty 设置为fields中的一个,例如userName。 相当于一个主键,用于识别
Ext.onReady(function(){
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget='side';
Ext.regModel("userInfo",{
idProperty:'Name',
fields:['Name','Password','RPassword','Email'],
proxy:{
type:'memory',
reader:{
type:'json',
root:'items'
}
}
});
var store=Ext.create('Ext.data.Store',{
storeId:'gridStore',
autoLoad:true,
model:'userInfo',
data:{'items':[
{'Name':'11','Password':'11','RPassword':'11','Email':'11'},
]},
});
var gridPanel=Ext.create('Ext.grid.Panel',{
id:'gridPanel',
autoScroll:true,
height:110,
store:store,
plugins:[
Ext.create('Ext.grid.plugin.CellEditing',{
clicksToEdit:1
})
],
columns:[
{header:'用户名',dataIndex:'Name',flex:1,
editor:{
xtype:'textfield',
name:'username'
}
},
{header:'密码',dataIndex:'Password',flex:1,
editor:{
xtype:'textfield',
name:'password1',
id:'password1',
inputType:'password',
}
},
{header:'确认密码',dataIndex:'RPassword',flex:1,
editor:{
xtype:'textfield',
name:'password2',
inputType:'password'
}
},
{header:'邮箱',dataIndex:'Email',flex:1,
editor:{
xtype:'textfield',
name:'email'
}
},
],
listeners:{
edit:function(editor,eOptions){
var store=Ext.data.StoreManager.lookup("gridStore");
var lastRecord=store.last();
var temp=lastRecord.get('Name')+lastRecord.get('Password')
+lastRecord.get('RPassword')+lastRecord.get('Email');
temp=Ext.util.Format.trim(temp);
if(temp!=""){
var newRecord={'Name':'','Password':'','RPassword':'','Email':''};
store.add(newRecord);
}
}
}
});
//注册表单
var formPanel=Ext.create('Ext.form.Panel',{
id:"formPanel",
width:700,
frame:true,
style:{
position:'relative',
margin:'30px auto',
border:'0'
},
renderTo:'content',
defaults:{
xtype:'textfield',
labelSeperator:':',
labelAlign:'right',
style:{
marginBottom:'10px'
},
allowBlank : false,//不允许为空
blankText : "不能为空"
},
items:[gridPanel],
buttons:[{
text:'注册',
handler:login
},{
text:'取消'
}]
});
function login(){
var records=store.getUpdatedRecords()[0];
Ext.Msg.alert("www ok",store.getUpdatedRecords().length+" "+records.get("Name"));
}
});
还可以通过model.dirty来判断是否修改过
var store = grid.getStore();
var result = [];
for(var i =0;i<store.getTotalCount();i++){
var model = store.getAt(i);
if(model.dirty){
result.push(model);
}
}
alert(result.length);
dirty : Boolean
Readonly flag - true if this Record has been modified.