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
}
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物件
load( Object options ) : void
由指定的Proxy使用指定的reader讀取遠端資料
loadData( Object data, [Boolean append] ) : void
用法比load簡單一點,目的是一樣的,只是這次資料由本地讀取
reload( [Object options] ) : void
重新載入,相當於 load(options,false),如果連options都沒有傳入,則取最後一次load時使用的引數
http://blog.csdn.net/xiaohewoai/article/details/4091604
ExtJS本質上也是一個AJAX的框架,但是它和DWR有很大不同,首先,DWR是JAVA世界的產物,而ExtJS是後臺無關的。也就是說,ExtJS的後臺可以是.NET,PHP或者JAVA都可以。其實我們在網上看到的大部分例子都是PHP或者.NET,後臺的。這說明ExtJS在所有後臺都很受青睞。其次,DWR只關注客戶端與伺服器端的互動,沒有自己的介面元件,而ExtJS最讓人驚歎的就是其豐富而強大的介面元件,除此以外,它自身也能輕鬆地非同步訪問後臺元件。
1. 首先是init-main.js,這裡定義了整個應用的主體佈局檢視Viewport。它和我們HTML中的frameset有點類似。在我們的主顯示區裡還放了一個TabPanel,這就是我們桌面應用中常見的選項皮膚。要理解下面的JS呢,你必須先掌握JSON這種資料格式,這個格式我在前面的ExtJS應用中已經詳細講過,如果還不太清楚,到http://www.json.org/json-zh.html 去看看,JSON在整個ExtJS體系裡佔有重要地位,熟悉JSON格式的人會對名/值對,{},[]很敏感。大家看到,在Viewport類和TabPanel類裡都傳入一個JSON物件來初始化整個元件。其次,你還要有容器和元件的概念,每個容器元件(容器同時也是元件,這是相對的,它放東西的時候是容器,被放置其中的時候就是元件!)都有一個items引數指定一個JSON陣列來表明自己容納的元件。
http://www.cnblogs.com/hannover/archive/2009/09/09/1563671.html
http://www.cnblogs.com/hannover/archive/2009/09/09/1563673.html
DAO裡操作的主要是POJO類,而在我們的Service裡面要做的就是DTO和POJO的轉化工作。因為表現層的程式碼只會直接和DTO打交道。這就是嚴格的JavaEE分層。說到這裡,可能有人開始迷惑了。我們這裡說明一下:在javaEE企業級開發中,我們一般提倡四層架構體系:WEB表現層->業務邏輯層(服務層)->持久層(資料訪問層)->資料庫層,我們這裡分別使用Struts,Spring,Hibernate來充當前三個層次的框架。一般我們把Action歸為Struts所在表現層,Service歸為Spring所在業務邏輯層(實際上,Spring是一個系統級別的框架,它的內涵和外延都比另外兩個框架要來的大!),DAO歸為Hibernate所在持久層,而在每一層上都有特定的傳值元件(呵呵,有人不喜歡用大詞,通俗點說,所謂傳值元件在javaEE體系中就是在頁面和資料庫之間幫忙傳遞資料的用JAVA寫的類!),我們自動,Struts裡有ActionForm,Hibernate裡有POJO,那在Spring管轄的業務邏輯層,主要就是DTO。所以我們的資料經常在這3個傳值元件之間傳遞。
這裡create和convert的配置大家注意下,所謂create就是建立一個JavaScript類和Java類的關聯對映。我們這裡只有一個建立器,它會在客戶端本地動態生成一個houseService.js檔案,然後它對應Spring框架管理的一個名為houseService的Bean,主要客戶端只要引用houseService.js這個檔案,就能呼叫到伺服器端houseService的方法。那麼,要是我只想向外界公開少數幾個方法呢?(涉及到安全問題),我們就可以用include配置了。那麼,這不就行了嗎?還需要convert幹什麼呢?恩,等一下。如果我們要在伺服器端給客戶端傳遞一個DTO物件,或者是放置著若干DTO物件的集合物件時。或者反過來,我們在客戶端給伺服器端傳遞一個JavaScript物件時。DWR怎麼做JavaScript物件和DTO物件之間的解析?如果你不給它相關資訊,它是做不到的,這就是convert的作用了。也就是說,create指定的物件被建立,convert指定的物件(客戶端和伺服器端之間攜帶傳遞的引數)被轉換!
http://www.cnblogs.com/hannover/archive/2009/09/09/1563664.html
ExtJs4.1:取得一個已存在Store的reference
//取得'StoreXiang'的reference
var StoreXiang = Ext.data.StoreManager.lookup('StoreXiang');
* 取得Srore的reference,並將其賦給gridPanel的store屬性:
Ext.create('Ext.grid.Panel', {
title: 'Simpsons',
store: Ext.data.StoreManager.lookup('simpsonsStore'),
columns: [
{ header: 'Name', dataIndex: 'name' },
{ header: 'Email', dataIndex: 'email', flex: 1 },
{ header: 'Phone', dataIndex: 'phone' }
],
height: 200,
width: 400,
renderTo: Ext.getBody()
});
http://blog.csdn.net/bq_cui/article/details/8527841
在4系中,grid的類是Ext.grid.Panel,由兩個必要的部分組成:Store和columns,其中Store為Ext.data.Store或者Ext.data.DirectStore物件的例項,columns為Ext.grid.Panel例項的屬性。
一個最簡單的grid:
測試網頁:test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" /> <script src="ext/ext-all.js" type="text/javascript"></script> <script src="ext/ext-lang-zh_CN.js" type="text/javascript"></script> <script src="js/test.js" type="text/javascript"></script> </head> <body> </body> </html> test.js Ext.onReady(function() { Ext.create('Ext.data.Store', { storeId:'simpsonsStore', fields:['name', 'email', 'phone'], data:{'items':[ {"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"}, {"name":"Bart", "email":"bart@simpsons.com", "phone":"555--222-1234"}, {"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"}, {"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"} ]}, proxy: { type: 'memory', reader: { type: 'json', root: 'items' } } }); Ext.create('Ext.grid.Panel', { title: 'Simpsons', store: Ext.data.StoreManager.lookup('simpsonsStore'), columns: [ {header: 'Name', dataIndex: 'name'}, {header: 'Email', dataIndex: 'email', flex:1}, {header: 'Phone', dataIndex: 'phone'} ], height: 200, width: 400, renderTo: Ext.getBody() }); })
這是一個最簡單的grid實現過程,使用memoryProxy在記憶體中讀取json資料,只有資料顯示功能。通常情況下,我們不會把grid直接渲染到body,而是到另外的container,所以herght、width、renderTo屬性不是必須的。必須有的兩個屬性分別是store和columns。其中columns直接在Ext.grid.Panel例項化時通過Ext.create引數設定,store為Ext.data.Store或者Ext.data.DirectStore的例項,通常使用Ext.data.StoreManager.lookup()函式搜尋StoreManager中註冊的storeId得到。也可以指定例項名稱,效果完全相同,方法如下:
Ext.onReady(function() { var simpsonsStore = Ext.create('Ext.data.Store', { fields:['name', 'email', 'phone'], data:{'items':[ {"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"}, {"name":"Bart", "email":"bart@simpsons.com", "phone":"555--222-1234"}, {"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"}, {"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"} ]}, proxy: { type: 'memory', reader: { type: 'json', root: 'items' } } }); Ext.create('Ext.grid.Panel', { title: 'Simpsons', store: simpsonsStore, columns: [ {header: 'Name', dataIndex: 'name'}, {header: 'Email', dataIndex: 'email', flex:1}, {header: 'Phone', dataIndex: 'phone'} ], height: 200, width: 400, renderTo: Ext.getBody() }); })
也可以通過4系最新提供的Ext.define函式首先定義自己store類,先不例項化,在Ext.grid.Panel例項化過程中例項化store,優勢是可以根據需要例項化相應的store,節省資源。
可以通過4系提供的new()函式例項化store,如下:
Ext.onReady(function() { Ext.define('simpsonsStore',{ extend:'Ext.data.Store', fields:['name', 'email', 'phone'], data:{'items':[ {"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"}, {"name":"Bart", "email":"bart@simpsons.com", "phone":"555--222-1234"}, {"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"}, {"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"} ]}, proxy: { type: 'memory', reader: { type: 'json', root: 'items' } } }); Ext.create('Ext.grid.Panel', { title: 'Simpsons', store: new simpsonsStore, columns: [ {header: 'Name', dataIndex: 'name'}, {header: 'Email', dataIndex: 'email', flex:1}, {header: 'Phone', dataIndex: 'phone'} ], height: 200, width: 400, renderTo: Ext.getBody() }); })
最簡單,也是最基礎的使用方法就是上面這個了,今天就說這麼多,明天說說columns的設定。
其它
http://www.cnblogs.com/zhangwei595806165/archive/2012/12/13.html