亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

深入淺析Extjs中store分組功能的使用方法

2019-11-20 10:14:23
字體:
來源:轉載
供稿:網友

在項目實踐的過程中,遇到需要將grid中數據根據某一字段分組的要求,當然,這個功能在api中有,在此列出來以供大家查找:

兩點需要注意的地方:

1、在創建store時,需要設置groupField屬性的值,即為需要分組的值

for example:

JavaScript代碼

Ext.define('Person', { extend: 'Ext.data.Model', fields: ['name', 'sex'] }); 

在這個數據模型中,我們需要以性別(sex)分組,那么請看下面的store

JavaScript代碼

var PersonStore = Ext.create('Ext.data.Store', { storeId: 'PersonStore', model: 'Person', groupField: 'sex', data: [{ name: 'hongmei li', sex: 'female' },{ name: 'san zhang', sex: 'male' },{ name: 'Jim Green', sex: 'male' },{ name: 'Lily', sex: 'female' },{ name: 'Lucy', sex: 'female' }] }); 

接下來,我們需要定義分組顯示的tpl

JavaScript代碼

var groupingFeature= Ext.create('Ext.grid.feature.Grouping',{ groupHeaderTpl: 'sex: {name} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})' });//注意其中{name}即為store中sex列所對應的值 

在gridPanel中,代碼如下:配置features為上述定義的groupingFeature

JavaScript代碼

var grid = Ext.create('Ext.grid.Panel', { renderTo: Ext.getBody(), store: PersonStore, width: 600, height: 400, title: 'Person', features: [groupingFeature], columns: [{ text: 'Name', flex: 1, dataIndex: 'name' },{ text: 'sex', flex: 1, dataIndex: 'sex' }] }); 

效果圖如下:

 

當然實現分組后,在gridPanel中sex這一列就可以不用顯示。

需要注意的是store中的數據如果在變化的時候,分組是不是也可以正常顯示呢?

現在給grid增加一個itemclick事件,代碼如下:

JavaScript代碼

listeners:{ itemclick:function(thisview,record){ PersonStore.<span style="color:#ff0000;">add</span>([{name:"li",sex:"male"},{name:"zhang",sex:"female"}]); } } 

效果如下圖

 

可以看出來,界面并不是我們想要的,那么如何解決呢?(最開始愚笨的解決方案是我將此gridPanel移除并銷毀掉,重新加載)我將listeners監聽事件的代碼做了一些變換

JavaScript代碼

listeners:{ itemclick: function (thisview,record){ PersonStore.loadData([{name: "li" ,sex: "male" },{name: "zhang" ,sex: "female" }], true ); } } 

再看效果:

 

這個就是我們想要的效果,在動態變化store中的數據時,分組也要實現,而不是將數據追加在gridPanel的最后。對應這兩段代碼的區分,主要在,store添加數據的方法,前者是add(record),后者是loadData(records,[append])

起初不能理解為什么同樣是store添加數據,效果卻不一樣,看官方文檔的解釋,add(),The new Model instances will be added at the end of the existing collection.(將數據追加在集合的最后)恍然大悟,loadData是按照store的規則將數據加載進來。

另外,如何移除組中最舊一行,自己動手查了一下,文檔實現了,在這里與大家分享:

//將前面的listeners監聽事件修改如下:

注意其中first([boolean group])方法,如果不傳參數,獲取的是store中的第一條數據,傳參為true時,返回的是store分組以組名為key,組內第一條數據為value的多個對象,PersonStore.first(true).female獲取female組內的第一條數據,想獲取male中的,可以使用PersonStore.first(true).male

JavaScript代碼

listeners:{ itemclick: function (thisview,record){ PersonStore.loadData([{name: "li" ,sex: "male" },{name: "zhang" ,sex: "female" }], true ); alert(PersonStore.first( true ).female.get( 'name' )); console.log(PersonStore.first( true ).female); PersonStore.remove(PersonStore.first( true ).female); // console.log(PersonStore.getAt(0));} }

為避免removedRecords占用內存,進行了進一步的處理,功能可以實現,但是方法有些笨,大家有好的辦法可以交流交流

看代碼:

listeners:{ itemclick:function(thisview,record){ PersonStore.loadData([{name:"li",sex:"male"},{name:"zhang",sex:"female"}],true); alert(PersonStore.first(true).female.get('name')); console.log(PersonStore.first(true)); PersonStore.remove(PersonStore.first(true).female); var recs = PersonStore.getRange(); console.log(recs); //PersonStore.removeAll(true);//這句有沒有都可以 PersonStore.loadRecords(recs);//重新load數據,內存中記錄的removed掉的就沒有了 console.log(PersonStore); alert(PersonStore.getRemovedRecords.length);//這句alert結果為0 // console.log(PersonStore.getAt(0)); } }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青a在线精品免费观看| 国产精品中文久久久久久久| 国产欧美va欧美va香蕉在| 国产亚洲精品va在线观看| 欧美日韩亚洲精品一区二区三区| 欧美性xxxxxxxxx| 日韩国产精品亚洲а∨天堂免| 欧美国产精品人人做人人爱| 性色av一区二区三区在线观看| 国产成人亚洲综合青青| 亲子乱一区二区三区电影| 日韩欧美精品在线观看| 欧美激情视频网| 久久精品中文字幕电影| 91久久国产综合久久91精品网站| 中文字幕综合一区| 日韩av最新在线| 日韩一级裸体免费视频| 色综合久久久久久中文网| 欧美日韩国产限制| 国产极品jizzhd欧美| 欧美天堂在线观看| 成人欧美一区二区三区黑人孕妇| 色综合天天综合网国产成人网| 欧美精品在线免费| 国产精品激情自拍| 欧美大尺度激情区在线播放| 色噜噜狠狠狠综合曰曰曰| 免费91麻豆精品国产自产在线观看| 国产亚洲精品激情久久| 久久九九亚洲综合| 精品久久在线播放| 国产成人在线一区| 亚洲国产精品电影在线观看| 热99精品里视频精品| 91精品在线观看视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 亚洲人成啪啪网站| 全亚洲最色的网站在线观看| 国产日韩欧美在线播放| 国产精品视频久| 日韩中文在线中文网在线观看| 精品久久在线播放| 亚洲加勒比久久88色综合| 中文字幕久热精品在线视频| 国产日韩精品电影| 精品毛片三在线观看| 国产精品视频区| 欧美日韩国内自拍| 亚洲黄色有码视频| 欧美日韩国产综合视频在线观看中文| 亚洲成人xxx| 国产不卡精品视男人的天堂| 日韩精品在线视频观看| 91久久久在线| 亚洲桃花岛网站| 欧美日韩精品在线播放| 欧洲中文字幕国产精品| 欧美最顶级的aⅴ艳星| 亚洲综合大片69999| 精品国产依人香蕉在线精品| 欧美成aaa人片免费看| 日韩高清a**址| 国产一区二区三区在线看| 亚洲精品久久久久久下一站| 日本精品免费一区二区三区| 日韩性生活视频| 亚洲精选中文字幕| 久久亚洲一区二区三区四区五区高| 中文字幕最新精品| 欧美午夜精品伦理| 久久亚洲精品国产亚洲老地址| 91精品久久久久久| 主播福利视频一区| 91爱爱小视频k| 亚洲人成在线播放| 亚洲精品视频免费在线观看| 国产精品户外野外| 欧美一级大片视频| 色婷婷综合久久久久| 国产情人节一区| 91欧美精品成人综合在线观看| 国产又爽又黄的激情精品视频| 黑人精品xxx一区| 亚洲精品综合久久中文字幕| 欧美尤物巨大精品爽| 亚洲精品福利在线| 一区二区三区无码高清视频| 正在播放欧美一区| 成人综合国产精品| 久久亚洲精品毛片| 精品一区精品二区| 亚洲欧美色图片| 亚洲成年人影院在线| 视频一区视频二区国产精品| 日韩在线视频中文字幕| 欧美又大粗又爽又黄大片视频| 欧美激情免费观看| 欧美激情视频一区二区| 欧美大片va欧美在线播放| 国产亚洲精品日韩| 国产精品久久久久久久久久久不卡| 国产精品自拍偷拍视频| 欧美尺度大的性做爰视频| 成人免费视频网址| 久久精品免费播放| 91精品在线播放| 8050国产精品久久久久久| 国a精品视频大全| www日韩中文字幕在线看| 亚洲欧美国产一区二区三区| 美女啪啪无遮挡免费久久网站| 91香蕉国产在线观看| 91禁外国网站| 日韩免费中文字幕| 久久视频免费观看| 欧美日韩在线影院| 日韩av网址在线观看| 国产丝袜精品第一页| 全色精品综合影院| 欧美在线www| 成人性生交大片免费看小说| 亚洲精品在线不卡| 欧美老女人bb| 亚洲精品美女在线| 日韩av综合中文字幕| 国产精品久久久久久网站| 日韩一区二区精品视频| 久久久久久久久久久网站| 欧美大尺度在线观看| 97精品国产91久久久久久| 国产精品观看在线亚洲人成网| 日韩欧美精品在线观看| 国产精品大陆在线观看| 91麻豆国产精品| 国产欧美精品日韩精品| 北条麻妃在线一区二区| 欧美中文在线观看| 成人伊人精品色xxxx视频| 国产欧美日韩中文| 国产精品日韩欧美大师| 久久久久久久电影一区| 国产成人精品午夜| 日韩欧美亚洲国产一区| 国产精品久久久久久中文字| 亚洲欧美另类在线观看| 久久精品国产视频| 国产97在线视频| 欧美精品久久久久久久免费观看| 亚洲精品乱码久久久久久按摩观| 成人免费看吃奶视频网站| 成人精品aaaa网站| 亚洲国产古装精品网站| 亚洲欧美日韩国产成人| 日韩精品在线观看视频| 亚洲第一页中文字幕| 日本国产一区二区三区| 国产亚洲精品va在线观看| 亚洲国产婷婷香蕉久久久久久| 日韩精品在线视频观看| 日韩av电影手机在线观看| 欧美成aaa人片在线观看蜜臀| 欧美激情国产日韩精品一区18| 日韩精品免费视频|