ExtJS RecordとStoreの説明

11376 ワード

ExtJS RecordとStoreの説明
転載:http://www.blogjava.net/liubijin/archive/2010/05/04/320008.html 1、Recordは、まず明確にする必要があります.ExtJSにRecordというクラスがあります.テーブルなどのコントロールで使用されるデータはRecordオブジェクトに格納されています.一つのレコードは関係データテーブルの一行として理解できます.記録とも言えます.Recordオブジェクトには、レコード(行の各列)の定義情報(つまり、どのフィールド、各フィールドのデータタイプなどを含むレコード)が含まれており、具体的なデータ情報(つまり、各フィールドの値)が記録されている.直接レコードを使うコードを見てみます.
Ext.onReady(
機能
(){         
var
 MyRecord 
を選択します.
 Ext.data.Record.creat([             {name: 'title'             {name: 'username mapping: 'author}             {name: 'logiinTimes'は、 タイプ: '
要点
'             {name: 'lastLoging Time'は、 mapping: 'ロゴタイム タイプ: 'date                     ]);          
var
 r
を選択します.
new
 MyRecord({                   title:

ログタイトル

を選択します.                   username:

easyjf

を選択します.                   ロゴTimes:
100
を選択します.                   ロゴタイム:
new
 Date()         });                 alert(MyRecord.get Field(

username

)mapping         alert(MyRecord.get Field(

lastLoging Time

)type;         alert(r.data.username);         alert(r.get(

ロゴTimes

)[形 });
   まずRecordのcreate方法を使用して、レコードセットMyRecordを作成します.MyRecordは、レコードセットの定義情報を含んでいます.MyRecordを通じてフィールド値を含むRecordオブジェクトを作成できます.上のコードの中で、最後のいくつかの文がレコードセットの関連情報を出力します.MyRecords.getField(「username」)記録中のusername列のフィールド情報を得ることができます.r.get(「logiinTimes」)は、loginTimesフィールドの値を記録することができます.r.data.usernameも、集中的なusernameフィールドの値を記録することができます.Recordについてある程度知っています.記録セットのデータを操作するのは非常に簡単です.r.set(name,value)レコードに指定されたフィールドの値を設定することができます.r.dirtyは、現在のレコードにフィールドの値が変更されたかどうかなどを得ることができます.2、Store Storeは、データメモリとして理解できます.クライアントの小型データテーブルとして認識し、キャッシュなどの機能を提供します.ExtJSでは、GridPanel、Commbox、DataViewなどのコントロールは、Storeと直接に接触し、storeを通じて取得します.コントロールには表示するデータなどが必要です.一つのStoreには複数のRecordが含まれています.また、Storeにはデータソースやデータ解析器などの関連情報が含まれています.Storeは特定のデータ解析器(Data Reader)を呼び出して、指定されたタイプやフォーマットのデータ(DataProxy)を解析します.データメモリはExt.data.Storeで定義され、データソース(DataProxy)とデータ解析方式(Data Reader)が動作し、Ext.data.Store類でデータソースはproxy配置属性によって定義され、データ解析(読み取り)が可能となる.器はreaderの配置属性によって定義されています.一つは順番にStoreを作成するコードは以下の通りです.
var MyRecord = Ext.data.Record.create([
             {name: 'title'},
             {name: 'username', mapping: 'author'},
             {name: 'loginTimes', type: 'int'},
             {name: 'lastLoginTime', mapping: 'loginTime', type: 'date'} 
                   ]);
         var dataProxy=new Ext.data.HttpProxy({url:"link.ejf"});
         var theReader=new Ext.data.JsonReader({
             totalProperty: "results", 
             root: "rows",              
             id: "id"                   
                   },MyRecord);
         var store=new Ext.data.Store({           
                             proxy:dataProxy,
                             reader:theReader
                   });
         store.load();
もちろん、このような避けられないコードが多いです.Storeでは、上記の例のコードの中で、まずHttpProxyを作成しなくてもいいです.Storeを作成する時にurl設定パラメータを指定するだけで、自動的にHttpProxyを使ってパラメータをロードします. 
var MyRecord = Ext.data.Record.create([
             {name: 'title'},
             {name: 'username', mapping: 'author'},
             {name: 'loginTimes', type: 'int'},
             {name: 'lastLoginTime', mapping: 'loginTime', type: 'date'} 
                   ]);
         var theReader=new Ext.data.JsonReader({
             totalProperty: "results", 
             root: "rows",              
             id: "id"                   
                   },MyRecord);
         var store=new Ext.data.Store({
         url:"link.ejf",
                             proxy:dataProxy,
                             reader:theReader
                   });
         store.load();
手動でHttpProxyを作成する必要はなくなりましたが、Data Readerなどを作成する必要があります.やはり複雑です.ExtJSはさらにこのような一般的なデータメモリをカプセル化しました.Store類に加えて、SimpleStore、SimpleStoreなどを提供しました.直接SimpleStoreを使用すれば、上のコードはさらに以下の内容に簡略化されます.
var store=new Ext.data.JSonStore({               
                   url:"link.ejf?cmd=list",
                   totalProperty: "results", 
                   root: "rows",
                   fields:['title',   {name: 'username', mapping: 'author'},
             {name: 'loginTimes', type: 'int'},
             {name: 'lastLoginTime', mapping: 'loginTime', type: 'date'} 
                   ]         
         });
         store.load();
  3、DataReader DataReaderは、サーバまたはメモリ配列、xml文書から得られた乱雑情報をExtJSの記録セットRecordデータオブジェクトに変換し、Store内の記録セット配列に格納するデータ解析器を表しています.データ解析器の基質はExt.data.DataReaderによって定義されています.他の具体的なデータ解析器はすべてです.このクラスのサブクラスは、ExtJSで2次元配列、JSonデータ、Xml文書を読み取る3つのデータ解析器を提供しています.メモリ内の2次配列、JSON形式のデータ、XML文書情報を記録セットに解析します.以下の簡単な紹介は、1)ArayReader Ext.data.ArayReader-配列解析器を使用して、2次元配列の情報を読み取り、記録します.レコードオブジェクトを記録します.まず次のコードを見ます.
var MyRecord = Ext.data.Record.create([
             {name: 'title', mapping:1},
             {name: 'username', mapping:2},
             {name: 'loginTimes', type:3} 
                   ]);
         var myReader = new Ext.data.ArrayReader({
             id: 0           
         }, MyRecord);
ここで定義されたmyReaderは、次の2次元配列を読み取ることができる.
[ [1, '  ', '  ',3], [2, '   ', 'williamraym',13] ]
2)Json Reader Ext.data.Json Reader-Jsonデータ解析器は、JSON形式のデータ情報を読み取り、記録集Recordオブジェクトに変換します.以下のコードを参照してください.
var MyRecord = Ext.data.Record.create([
             {name: 'title'},
             {name: 'username', mapping: 'author'},
             {name: 'loginTimes', type: 'int'}
                   ]);
         var myReader = new Ext.data.JsonReader({
                   totalProperty: "results", 
         root: "rows",       
          id: "id" 
         }, MyRecord);
ここのJson Readerは以下のJSONデータを解析できます.
{ 'results': 2, 'rows': [
    { id: 1, title: '  ', author: '  ', loginTimes: 3 },
    { id: 2, title: 'Ben', author: 'williamraym', loginTimes:13} ]
}
JSonReaderはまだ特殊な使い方があります.Storeに記録されているセットの配置情報をそのままサーバーから戻ってきたJSONデータに保存することができます.
var myReader = new Ext.data.JsonReader();
  この一つはパラメータを持たないmyReaderです.サーバーから戻ってきた次のJSONデータを処理できます.
{
 'metaData': {
    totalProperty: 'results',
    root: 'rows',
    id: 'id',
    fields: [
       {name: 'title'},
             {name: 'username', mapping: 'author'},
         {name: 'loginTimes', type: 'int'} ]
   },
 'results': 2, 'rows': [
    { id: 1, title: '  ', author: '  ', loginTimes: 3 },
    { id: 2, title: '   ', author: 'williamraym', loginTimes:13}]
}
3)Xml Reader Ext.data.Xml Reader-XMLドキュメントのデータ解析器は、XMLドキュメントのデータを記録セットRecordオブジェクトに変換するために使用されます.以下のコードを参照してください.
var MyRecord = Ext.data.Record.create([
             {name: 'title'},
             {name: 'username', mapping: 'author'},
             {name: 'loginTimes', type: 'int'}
                   ]);
         var myReader = new Ext.data.XmlReader({
                   totalRecords: "results", 
         record: "rows",       
                    id: "id" 
         }, MyRecord);
上のmyReaderは以下のxml文書情報を解析できます.
<topics>
 <results>2</results>
 <row>
   <id>1</id>
   <title>
</ title >
   <author> </ author >
 <loginTimes>3</ loginTimes >
 </row>
 <row>
   <id>2</id>
   <title> </ title >
   <author> williamraym </ author >
 <loginTimes>13</ loginTimes >
 </row>
</topics>