加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Extjs 解决store.getUpdatedRecordes()获取不到数据

发布时间:2020-12-15 04:50:40 所属栏目:百科 来源:网络整理
导读:Extjs3.x中是store.getModifiedRecordes(), 用editgridpanel来获取被修改的记录,可是怎么也获取不到,深究才知道 store类的getUpdatedRecords 会通过 model类的三个条件? 1,dirty == true ? ? ? 2, phantom !== true ? ? 3,isValid() ? ? 来确定一个rec

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',name:'password1',id:'password1',inputType:'password',}
	      },{header:'确认密码',dataIndex:'RPassword',name:'password2',inputType:'password'
	         }
	      },{header:'邮箱',dataIndex:'Email',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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读