Extjs 솔루션 스토어.getUpdatedRecordes()에서 데이터를 가져올 수 없음

Extjs3.x에서는 store입니다.getModifiedRecordes(),
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.

좋은 웹페이지 즐겨찾기