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);

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/blackant2/archive/2007/11/30/1909074.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章