Extjs-数据存储与传输-对Store操作

1.设置store排序

第一种:

var store = new Ext.data.Store({
	//排序
	sortInfo : {
		field : 'age',
		direction : 'desc'
	}
});

第二种:

store.setDefaultSort('age','desc');

1.1获取Ext.data.Store的排列信息

store.getSortState();//返回类似{field:'age',direction:'desc'}JSON对象

 2.从store中获取数据

2.1遍历Ext.data.Store

第一种:

for(var i=0;i<store.getCount();i++){
	//获取i个record
	var record = store.getAt(i);
	//获取i个record的name值
	var name = record.get('name');
}

第二种:

store.each(function(record){
	var name = record.get('name');
});

如果需要停止遍历需要让function()返回false
2.2使用getRange()函数获取多个record

var record = store.getRange(0,1);//两个参数分别是开始和结束位置索引值

2.3使用record本身的id从store中获取对应的record

var record = store.getById(1001);

2.4使用find()对store数据进行索引

store.find(String property,String/RegExp value,Number startIndex,Number anyMatch,Boolean caseSensitive){
	/*
		第一个参数property代表搜索的字段名,
		第二个参数value是匹配用字符串或者正则表达式
		第三个参数startIndex表示从第几行开始搜索
		第四个参数anMatch为true时,不必从头开始匹配
		第五个参数caseSensitive为true时,去区分大小写
	
	*/
};

代码:

var index = store.find('name','g');
var record = store.getAt(index);
var name = record.get('name');

2.5使用findBy()对store数据进行索引 

store.findBy(Function fn,Object scope,Number startIndex){
	/*
		findBy()函数允许用户使用自定义函数对内部数据进行搜索,fn返回ture,表示查找成功,于是停止遍历并且返回行号
	*/
}

代码:

var index = store.findBy(function(record,id){
	//如果name=lwc就返回
	return record.get('name')=='lwc';
});
var record = store.getAt(index);
var name = record.get('name');

3.更新store中的数据

3.1给store末尾插入record,不排序

//给store增加一个record		
store.add(
	new MyRecord({
		name : 'lwc',
		age : 18
	})
);
//给store增加多个record
store.add([
	new MyRecord({
		name : 'lwc',
		age : 18
	}),
	new MyRecord({
		name : 'wr',
		age : 17
	}),
]);

3.2给store末尾插入record,带排序

//这个函数必须事先给store设置本地排序	
store.addSorted(
	new MyRecord({
		name : 'lwc',
		age : 18
	})
);
store.addSorted([
	new MyRecord({
		name : 'lwc',
		age : 18
	}),
	new MyRecord({
		name : 'wr',
		age : 17
	}),
]);

3.3如果希望自定指定的数据插入索引位置,使用insert()函数,第一个参数代表索引位置

store.insert(3,
	new MyRecord({
		name : 'lwc',
		age : 18
	})
);
store.insert(3,[
	new MyRecord({
		name : 'lwc',
		age : 18
	}),
	new MyRecord({
		name : 'wr',
		age : 17
	}),
]);

3.4删除操作可以使用remove()和removeAll()函数

store.remove(store.getAt(0));
store.removeAll();

3.5store中没有修改某一行record的操作,我们需要先得到record再对record进行修改

store.getAt(0).set('name','wr');
/*
	修改record内部数据之后有两种选择:
	执行rejectChanges()撤销所有修改,将修改过的record恢复到原来的状态,
	执行commitChanges()提交数据修改
	在执行撤销和提交操作之前可以使用getModifiedRecords获得store中修改过的record数组
	与修改相关的参数是pruneModifiedRecords,如果设置ture,那么每次执行删除或者reload操作会清空修改,
	这样,在每次执行删除或者reload操作之后,getModifiedRecords()返回的就是一个空数组,
	否则仍然会得到上次修改过的record记录
*/

4.加载以及显示数据

store.load({
	params : {start:0,limit:20},//store加载传递的参数
	/*
		加载完毕时执行的回调函数
		records表示获取的数据,options表示执行load()时传递的参数,success表示是否加载成功
	*/
	callback : function(records,options,success){
		Ext.Msg.alert('info','加载成功...');
	},
	scope : store,//回调函数的作用域
	add : true//load()得到数据添加在原来的store数据末尾,否则先清除后添加
});
/*
	reload()会重新加载数据,store会自动使用上次load()包含的参数
	有固定传递的参数可以使用baseParams,它是一个JSON对象
	store.baseParams.start = 0;
	store.baseParams.limit = 20;
*/

5.store过滤使用fiter()和filterBy()

如果想让不需要的store不显示使用这两个方法
代码省略参考上面的find()和findBy()
取消过滤store.clearFilter()
想知道store是否设置了过滤器可以使用isFiltered()函数进行判断

6.其他功能

//用于翻页获取后台传递过来的数据总数,如果没有设置翻页getTotalCount和getCount()相同,都返回当前数据的总数
store.getTotalCount();
//这两个函数都是根据record或者record的id获得record对应的行号
store.indexOf(store.getAt(1));
store.indexOfId(1001);
//从本地javascript中读取数据,append为true时,就会将读取的所有数据附加到store中原来的数据后面,否则就会执行整体更新
store.loadData(data,true);
//用于计算某一个列从start到end的总和,如果省略start和end就是计算全部的
sum(String property,Number start,Number end)
store.sum('sex');


 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值