zoukankan      html  css  js  c++  java
  • [转载]EXT核心API详解Ext.data(十一)Store

    Ext.data.Store
    store是一个为Ext器件提供record对象的存储容器,行为和属性都很象数据表

    方法:不列举继承来的方法
    Store( Object config )
    构造,config定义为{
    autoLoad : Boolean/Object,    //自动载入
    baseParams : Object,    //只有使用httpproxy时才有意义
    data : Array,        //数据
    proxy : Ext.data.DataProxy,//数据代理
    pruneModifiedRecords : boolean,//清除修改信息
    reader : Ext.data.Reader,    //数据读取器
    remoteSort : boolean,    //远程排序?
    sortInfo : Object,    //{field: "fieldName", direction: "ASC|DESC"}这样的排序对象
    url : String,        //利用url构造HttpProxy
    }

    add( Ext.data.Record[] records ) : void
    增加记录records 到store

    addSorted( Ext.data.Record record ) : void
    增加record到store并排序(仅本地排序时有用)

    clearFilter( Boolean suppressEvent ) : void
    清除过滤器

    collect( String dataIndex, [Boolean allowNull], [Boolean bypassFilter] ) : Array
    收集由dataIndex指定字段的惟一值

    commitChanges() : void
    提交Store所有的变更,会引发Update事件


    filter( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : void
    设定过滤器
    field:String    //字段名
    value:String    //RegExp 如果是字符器,检查field是否以value开始,如果是正则,检查是否匹配
    anyMatch:Boolean //匹配任何部分而不仅令是开始
    caseSensitive:Boolean //大小写敏感?

    filterBy( Function fn, [Object scope] ) : void
    更强悍的过滤方法.fn接收两个参数record和id

    find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch], [Boolean caseSensitive] ) : Number
    找到符合条件的第一条记录,参数同filter

    findBy( Function fn, [Object scope], [Number startIndex] ) : Number
    参见filterBy

    getAt( Number index ) : Ext.data.Record
    getById( String id ) : Ext.data.Record
    依充号/id得到record对象

    getCount() : void
    得到记录数

    getModifiedRecords() : Ext.data.Record[]
    得到修改过的记录集

    getRange( [Number startIndex], [Number endIndex] ) : Ext.data.Record[]
    得到指定范围的记录集合

    getSortState() : void
    得到排序状态:显然不是void而是返回一个排序对象,同sortInfo一样的结构{field: "fieldName", direction: "ASC|DESC"}

    getTotalCount() : void
    这个对于翻页信息还是很有用的

    indexOf( Ext.data.Record record ) : Number
    indexOfId( String id ) : Number
    由记录或id得到序号

    insert( Number index, Ext.data.Record[] records ) : void
    在指定的位置插入记录,并引发add事件

    isFiltered() : Boolean
    当前设置了过滤器则返回真

    load( Object options ) : void
    由指定的Proxy使用指定的reader读取远程数据
    options定义为
    {
        params :Object,    //请求url需要附加的参数
        callback :Function//回叫方法,接收三个参数
        //r : Ext.data.Record[] //返回的record数组
        //options: Options load方法传入的options
        //success: Boolean //成功
        scope :Object, //范围.默认是store本身
        add :Boolean 追加还是更新
    }

    loadData( Object data, [Boolean append] ) : void
    用法比load简单一点,目的是一样的,只是这次数据由本地读取

    query( String field, String/RegExp value, [Boolean anyMatch], [Boolean caseSensitive] ) : MixedCollection
    queryBy( Function fn, [Object scope] ) : MixedCollection
    查询,参数和find类似,但返回所有符合条件的record,而不是第一个符合条件记录的序号

    rejectChanges() : void
    放弃所有的变更

    reload( [Object options] ) : void
    重新载入,相当于 load(options,false),如果连options都没有传入,则取最后一次load时使用的参数

    remove( Ext.data.Record record ) : void
    移除指定记录

    removeAll() : void
    移除所有记录

    setDefaultSort( String fieldName, [String dir] ) : void
    设置默认排序规则

    sort( String fieldName, [String dir] ) : void
    排序

    sum( String property, Number start, Number end ) : Number
    对property字段由start开始到end求和

    事件列表
    add : ( Store this, Ext.data.Record[] records, Number index )
    beforeload : ( Store this, Object options )
    clear : ( Store this )
    datachanged : ( Store this )
    load : ( Store this, Ext.data.Record[] records, Object options )
    loadexception : ()
    metachange : ( Store this, Object meta. )
    remove : ( Store this, Ext.data.Record record, Number index )
    update : ( Store this, Ext.data.Record record, String operation )
    看名字都很简单,参数也不复杂,略过

    用例
    //得到远程json对象
    //其中jsoncallback.js内容为
    //{ 'results': 2, 'rows': [
    //    { 'id': 1, 'name': 'Bill', occupation: 'Gardener' },
    //    { 'id': 2, 'name': 'Ben', occupation: 'Horticulturalist' } ]
    //}
    //定义proxy
          var proxy=new Ext.data.HttpProxy(...{url:'jsoncallback.js'});
    //定义reader
          var reader=new Ext.data.JsonReader(
            ...{
            totalProperty: "results",//totalRecords属性由json.results得到
            root: "rows",            //构造元数据的数组由json.rows得到
            id: "id"                //id由json.id得到
            },[
            ...{name: 'name', mapping: 'name'},
            ...{name: 'occupation'}            //如果name与mapping同名,可以省略mapping
            ]
        )
    //构建Store  
        var store=new Ext.data.Store(...{
          proxy:proxy,
          reader:reader
       });
    //载入
    store.load();

    示例2
    //得到远程xml文件
    //其中xml文件内容为
    <?xml version="1.0" encoding="utf-8" ?>
    <dataset>
    <results>2</results>
    <row>
        <id>1</id>
        <name>Bill</name>
        <occupation>Gardener</occupation>
    </row>
    <row>
        <id>2</id>
        <name>Ben</name>
        <occupation>Horticulturalist</occupation>
    </row>
    </dataset>

    var proxy=new Ext.data.HttpProxy(...{url:'datasource.xml'});
      
        var reader = new Ext.data.XmlReader(...{
           totalRecords: "results",
           record: "row",       
           id: "id"               
        }, [
           ...{name: 'name', mapping: 'name'},
           ...{name: 'occupation'}          
        ]);
       var store=new Ext.data.Store(...{
          proxy:proxy,
          reader:reader
       });
    store.load();

    示例3
    //从本地数组得到
    var arr=[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ];
    var reader = new Ext.data.ArrayReader(
       
    {id: 0},
        [
        
    {name: 'name', mapping: 1},        
        
    {name: 'occupation', mapping: 2}   
         ]);
       
        
    var store=new Ext.data.Store({
           reader:reader
        }
    );
        store.loadData(arr);
  • 相关阅读:
    Ext JS学习第三天 我们所熟悉的javascript(二)
    Ext JS学习第二天 我们所熟悉的javascript(一)
    Ext JS学习第十七天 事件机制event(二)
    Ext JS学习第十六天 事件机制event(一)
    Ext JS学习第十五天 Ext基础之 Ext.DomQuery
    Ext JS学习第十四天 Ext基础之 Ext.DomHelper
    Ext JS学习第十三天 Ext基础之 Ext.Element
    Ext JS学习第十天 Ext基础之 扩展原生的javascript对象(二)
    针对错误 “服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF” 的原因分析
    C# 使用HttpWebRequest通过PHP接口 上传文件
  • 原文地址:https://www.cnblogs.com/luluping/p/1527477.html
Copyright © 2011-2022 走看看