Ext.data.Store的基本用法
在使用之前,首先要创建一个Ext.data.Store的实例,如下面的代码所示。
每个store最少需要两个组件的支持,分别是proxy和reader,proxy用于从某个途径读取原始数据,reader用于将原始数据转换成Record实例。
这里我们使用的是Ext.data.MemoryProxy和Ext.data.ArrayReader,将data数组中的数据转换成对应的几个PersonRecord实例,然后放入store中。
store创建完毕之后,执行store.load()实现这个转换过程。
经过转换之后,store里的数据就可以提供给Grid或ComboBox使用了,这就是Ext.data. Store的最基本用法。
Ext.data.Store对数据进行排序
Ext.data.Store提供了一系列属性和函数,利用它们对数据进行排序操作。
可以在创建Ext.data.Store时使用sortInfo参数指定排序的字段和排序方式,如下面的代码所示。
这样,在store加载数据之后,就会自动根据name字段进行降序排列。对store使用store.setDefaultSort('name','DESC');也会达到同样效果。
也可以在任何时候调用sort()函数,比如store.sort('name', 'DESC');,对store中的数据进行排序。
如果我们希望获得store的排序信息,可以调用getSortState()函数,返回的是类似{field: "name", direction: " DESC"}的JSON对象。
与排序相关的参数还有remoteSort,这个参数是用来实现后台排序功能的。
当设置为remoteSort:true时,store会在向后台请求数据时自动加入sort和dir两个参数,
分别对应排序的字段和排序的方式,由后台获取并处理这两个参数,在后台对所需数据进行排序操作。
remoteSort:true也会导致每次执行sort()时都要去后台重新加载数据,而不能只对本地数据进行排序。
Ext.data.Store从store中获取数据
从store中获取数据有很多种途径,可以依据不同的要求选择不同的函数。
最直接的方法是根据record在store中的行号获得对应的record,得到了record就可以使用get()函数获得里面的数据了,如下面的代码所示。
通过这种方式,我们可以遍历store中所有的record,依次得到它们的数据,如下面的代码所示。