Extjs 솔루션 스토어.getUpdatedRecordes()에서 데이터를 가져올 수 없음
editgridpanel로 수정된 기록을 얻지만, 아무리 해도 얻지 못한다. 깊이 파고들어야 알 수 있다
store 클래스의 getUpdated Records는 모델 클래스의 세 가지 조건을 통과합니다.
1,dirty == true 2, phantom !== true 3,isValid()
레코드가 업데이트되었는지 확인하십시오.조건1과 3은 문제없다. 문제는 조건2에서 나온다.
레코드 (모델 클래스의 실례) 가 서버 측 데이터베이스에 존재할 때, 그 phantom은false이고, 그렇지 않으면true입니다.
Ext의 경우 모델 클래스의 idProperty 속성이 지정한 데이터 필드를 통해 이 레코드가 서버 측 데이터베이스에 존재하는지 판단합니다.
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"));
}
});
모델을 통해서도 가능합니다.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.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
콜백 함수를 Angular 하위 구성 요소에 전달이 예제는 구성 요소에 함수를 전달하는 것과 관련하여 최근에 직면한 문제를 다룰 것입니다. 국가 목록을 제공하는 콤보 상자 또는 테이블 구성 요소. 지금까지 모든 것이 구성 요소 자체에 캡슐화되었으며 백엔드에 대한 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.