GroupingStore / ViewずExtJSで矎しいリストを䜜成する

今日は、ExtJSをあらゆるデヌタの矎しい機胜的なリスト、たずえばナヌザヌやグルヌプのリストにする方法に぀いお説明したす。 珟圚のプロゞェクトの1぀でこのリストを䜿甚したすもう矎しくも䟿利でもありたせんが。このようなりィゞェットを䜿甚しお、テストラむンだけでなく拡匵デヌタでも特城付けられるデヌタを衚瀺できたす。たた、それぞれにいく぀かのアクションを関連付ける必芁もありたす募集。 ストアを介しお動的にデヌタを曎新したり、䞊べ替えやグルヌプ化を行ったりするこずができたす。䞀般的には、ExtJSのグリッドコンポヌネントが提䟛するすべおの機胜を䜿甚できたす。 ExtJS 3.0のバヌゞョンを䜿甚するこずをすぐに蚀わなければなりたせんが、以前のリリヌス2.3.xでは、この䟋も実行可胜でなければなりたせん。 䞎えられたコンポヌネントは䟋であり、コヌドを䜿甚する準備が党くできおいたせんが、可胜性のデモンストレヌションのみであり、プロゞェクトで奜きなように倉曎および修正できたす。 同じ理由で、意図的にこの蚘事の゜ヌスコヌドはありたせん。



このコンポヌネントで考慮した䞻な点は、アクション間の距離を最小化するこずです。぀たり、リストを芋るず、ナヌザヌは必芁な情報もちろんリストのコンテキストでをすぐに受信し、それが衚瀺できない堎合はアクション自䜓に関する情報を受け取る必芁がありたす機䌚もすぐに芋えるようにする必芁がありたす。 そのため、コンテキストメニュヌを拒吊したした。むしろ、アむコンのアクションをリストに盎接耇補したした。 したがっお、远加のアクション「ここから他に䜕ができるか」ずいう質問に察する答えを芋぀けるためだけにメニュヌを開くの必芁性を排陀し、可胜なアクションをすぐに衚瀺したす。 同じ原則から進むず、ツヌルヒントヒントには特定のアむテムを説明する参照情報のみが含たれたす。ナヌザヌが最初にこの芁玠たたはその芁玠の目的を理解できず、カヌ゜ルを移動しお明瀺的にヒントを芁求する堎合にのみ䜿甚されたす。



では、開発に取り掛かりたしょう。 リストのデヌタ゜ヌスずしお、デヌタ配列 ArrayReaderを䜿甚しお読み取り を䜿甚し、デヌタストアずしおExt.data.GroupingStoreを䜿甚したす。 このサむドでは、フィヌルドの1぀でデヌタのグルヌプ化を䜿甚できたすが、グルヌプのレンダリングで興味深い状況に遭遇したしたが、それに぀いおは埌で詳しく説明したす。 そのため、デヌタをサヌバヌに転送し、指定された基準に埓っおデヌタを䞊べ替えおグルヌプ化し、フィヌルドの1぀を䜿甚したす。 情報ストアずしおの配列は、サヌバヌから盎接デヌタを曎新する必芁がないこずに基づいお遞択されたした。これには別のメカニズムがあるため、簡単にするために、すべおのデヌタをロヌカルに既に持っおいるず考えおいたす。



゜ヌスデヌタの構造は次のずおりです。





var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  1. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  2. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  3. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  4. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  5. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  6. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  7. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  8. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  9. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  10. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  11. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



  12. var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .



var _user_groups = [ [0, 'user_home.png' , ' ' ,2, 'system' , ' ' ], [10, 'user_home.png' , ' ' ,10, 'profy' , '' ], [20, 'user_home.png' , ' iPhone/iTouch' ,22, 'profy' , '' ], [30, 'user_home.png' , ' FreeBSD' ,11, 'profy' , '' ], [40, 'user_home.png' , ' ' ,20, 'filials' , ' ' ], [50, 'user_home.png' , ' ' ,120, 'publicusers' , '' ], [60, 'user_home.png' , ' ' ,99, 'publicusers' , ' , ' ] ]; * This source code was highlighted with Source Code Highlighter .







これが、ストア準備コヌドの倖芳です。 グルヌプコヌドをグルヌプ化のフィヌルドずしお蚭定し、サヌビス配列から残りのデヌタを取埗したす。 残念ながら、グルヌプ化フィヌルドの操䜜にはいく぀かの困難がありたす。各行をレンダリングするずき、スクリプトはグルヌプヘッダヌを曞き換えるため、毎回曞き換える必芁がありたす。 グルヌプヘッダヌを暙準化するメカニズムはありたすが、䟋にもかかわらず、䜕も機胜しなかったため、ヘッダヌレンダリング関数を手動で再定矩したした。 グルヌプ化は、䞊べ替えた同じフィヌルドに察しおのみ可胜であるこずに泚意しおください。







  1. var _usergroup_store = new Ext.data.GroupingStore{
  2. リヌダヌ 新しい Ext.data.ArrayReader{}、
  3. [{
  4. 名前 'id' 、
  5. タむプ 'int'
  6. }、{
  7. 名前 'group_icon' 、
  8. タむプ 'string'
  9. }、{
  10. 名前 'group_name' 、
  11. タむプ 'string'
  12. }、{
  13. 名前 'count_users' 、
  14. タむプ 'string'
  15. }、{
  16. id 'group_type' 、
  17. 名前 'group_type' 、
  18. タむプ 'string'
  19. }、{
  20. 名前 'group_desc' 、
  21. タむプ 'string'
  22. }]、
  23. デヌタ_user_groups、
  24. sortInfo{
  25. フィヌルド 'group_type' 、
  26. 方向 「ASC」
  27. }、
  28. groupField 'group_type' 、
  29. groupOnSort true
  30. };
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。




グルヌプデヌタの远加゜ヌスも必芁になりたす。 オブゞェクトずしお実装したした。グルヌプコヌドを䜿甚しお、説明、アむコン、その他のデヌタを取埗できたす。 もちろん、これはすべお元のデヌタ配列に含めるこずができたすが、同じデヌタが他の堎所で䜿甚されるため、別々に取り出されたす。







  1. var _user_groups_cats = {
  2. システム{
  3. アむコン 'user_home.png' 、
  4. title 'システムグルヌプ' 、
  5. desc 「Wheemplay Ltd.のスタッフ限定サヌビスグル​​ヌプ」 、
  6. isClosed true 、
  7. isPrivate false
  8. }、
  9. profy{
  10. アむコン 'user_star.png' 、
  11. タむトル 'プロフェッショナルグルヌプ' 、
  12. desc 「むンタレストグルヌプ」 、
  13. isClosed false 、
  14. isPrivate false
  15. }、
  16. 芪子{
  17. アむコン 'user_earth.png' 、
  18. title 'ブランチグルヌプ' 、
  19. desc 「プラむベヌトブランチグルヌプ」 、
  20. isClosed false 、
  21. isPrivate true
  22. }、
  23. publicusers{
  24. アむコン 'group.png' 、
  25. title '䞀般ナヌザヌ' 、
  26. desc 「誰でも入力できるパブリックグルヌプ」 、
  27. isClosed false 、
  28. isPrivate false
  29. }、
  30. 私{
  31. アむコン 'user_comment.png' 、
  32. title '<strong>自分のグルヌプ</ strong>' 、
  33. desc '私のグルヌプあなたはメンバヌです' 、
  34. isClosed true 、
  35. isPrivate true
  36. }
  37. }
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。




通垞のグルヌプ蚭定に加えお、グルヌプがプラむベヌトであるかプラむベヌトであるかずいう2぀の远加蚭定がありたす。 他の任意のパラメヌタヌを䜿甚できたす。 これらは、パラメヌタヌに基づいお各グルヌプに必芁なアむコンずアクションを衚瀺するために䜿甚されたす。 ぀たり、グルヌプが閉じおいる堎合、アクション「グルヌプに参加」などのアむコンを衚瀺する必芁はありたせん。



さらに、珟圚のナヌザヌがメンバヌずなっおいるグルヌプのコヌドを配列に保存したす。

  var _i_in_group = [0、30、60]; 


これで、リストをレンダリングするためのすべおのデヌタができたした。 これを行うには、Ext.grid.GridPanelコンポヌネントを䜿甚したすが、その機胜はもちろんこのような䟋では少し冗長です。 ListViewのようなものを䜿甚する方が良いでしょう。おそらく次の蚘事では、すべおをリメむクするこずを詊みたすが、今はグリッドを詊しおみたす。 そうでなければ、グルヌプ化の独立した実装を考え出す必芁があり、将来の拡匵が問題になりたす。 したがっお、ケヌスを個人的に怜蚎する必芁がありたす。グリッドのすべおの機胜が必芁でない堎合は、軜量で高速なListViewを䜿甚しおみおください。ただし、さらに倚くの手䜜業が必芁になりたす。



そのため、以前に䜜成したExt.data.GroupingStore _usergroup_storeを䜿甚するデヌタ゜ヌスずしお、 Ext.grid.GridPanelコンポヌネントを䜜成したす。 䞻な機胜は、列ずそのレンダリングの説明に集䞭しおいたす。これに぀いおは、埌で詳しく説明したす。 最初に、レンダラヌのない列の説明を瀺したすレンダラヌたたはレンダラヌは、セル内の倀ずしお衚瀺される任意のテキストたたはhtmlコヌドを返す特別なメ゜ッドです。







  1. 列[{
  2. id 'group_name' 、
  3. ヘッダヌ 「<strong>グルヌプ</ strong>」 、
  4. ゜ヌト可胜 false 、
  5. 幅150、
  6. dataIndex 'group_name'
  7. }、{
  8. ヘッダヌ 「メンバヌ」 、
  9. 幅35、
  10. 非衚瀺 false 、
  11. ゜ヌト可胜 true 、
  12. dataIndex 'count_users'
  13. }、{
  14. ヘッダヌ 「アクション」 、
  15. 幅60、
  16. 非衚瀺 false 、
  17. ゜ヌト可胜 false 、
  18. dataIndex 'count_users'
  19. }、{
  20. id 'group_type' 、
  21. dataIndex 'group_type' 、
  22. 非衚瀺 true 、
  23. グルヌプ化可胜 true
  24. }]
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。




ご芧のように、グルヌプ化は最埌のフィヌルドストア内の同じ列のデヌタを䜿甚するgroup_type列に埓っお行われたす列IDがdataIndexず䞀臎するため、通垞は同じ列名を䜿甚したす。 ただし、この列を衚瀺する必芁はありたせん。グルヌプ化のための玔粋なナヌティリティなので、hiddentrueパラメヌタを蚭定し、このフィヌルドでグルヌプ化するこずを瀺したす-groupabletrue。



列ごずにレンダラヌずレンダヌグルヌプの2皮類のレンダラヌがありたす。 最初はセル内のデヌタの衚瀺を担圓し、2番目はグルヌプヘッダヌの衚瀺に䜿甚されたす。 ここに1぀の重倧な困難がありたす明らかに、これは開発者による奇劙なアヌキテクチャ䞊の決定にすぎたせん。 グルヌプヘッダヌはこの芁玠のスタむル名ずしお䜿甚されたす。たずえば、htmlコヌドを远加しおグルヌプのレンダリングを再定矩するず、このテキストはすべおグルヌプスタむル識別子に送られたす。 以䞋は、この点を説明するためのFirebugのスクリヌンショットです。 たた、グルヌプ化メカニズムを完党に理解しおいなかったこずも十分に認めおいるので、远加たたは修正しおいただけるずありがたいです。











各列の出力に぀いお説明したす。 グルヌプの名前の前に、1぀たたは2぀のアむコンを付けるこずができたす。 緑色の点は、グルヌプが開いおいるかどうかを瀺したす-グルヌプが存圚する堎合、グルヌプは公開されおいるか、プラむベヌトたたはクロヌズされおいる堎合、別のアむコンが衚瀺されたす。 独自のグルヌプ属性を䜿甚しお、他の情報を衚瀺できたす。 各アむコンには独自のツヌルチップがあり、マヌクアップによっお远加されたす倚くの堎合、より䟿利です。







  1. レンダラヌ 関数 obj、x、y
  2. {
  3. var src = '<span style = "cursorpointer;">' ;
  4. //簡玠化する
  5. var tmp = _user_groups_cats [y.data.group_type];
  6. if tmp.isClosed == true 
  7. {
  8. src = src +
  9. '<img src = "/ images / icons / bullet_error.png" alt = "" align = "absmiddle" />' ;
  10. }
  11. if tmp.isPrivate == true 
  12. {
  13. src = src +
  14. '<img src = "/ images / icons / bullet_key.png" alt = "" align = "absmiddle" />' ;
  15. }
  16. if tmp.isClosed == false &&tmp.isPrivate == false 
  17. {
  18. src = src +
  19. '<img src = "/ images / icons / bullet_green.png" alt = "" align = "absmiddle" />' ;
  20. }
  21. //結果を必ず返す
  22. return src + '' + obj + '</ span>' ;
  23. }
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。




レンダラヌの詳现ず蚭定方法に぀いおは、 公匏ドキュメントをご芧ください。 さたざたなデヌタがメ゜ッドに転送されたす。初期倀最初のパラメヌタヌ、倀がレンダリングされるhtmlオブゞェクトに関するmatデヌタ、および珟圚のレコヌドのオブゞェクト3番目のパラメヌタヌのみに関心がありたす。



2番目の列は、各グルヌプの参加者の数です。 ただし、グルヌプがプラむベヌトの堎合、このデヌタを非衚瀺にする必芁があるため、レンダリングでグルヌプのタむプを確認し、必芁な倀を衚瀺したす。







  1. レンダラヌ 関数 obj、x、y
  2. {
  3. if _user_groups_cats [y.data.group_type] .isPrivate == false 
  4. {
  5. obj + 'private'を 返し たす ;
  6. }
  7. 他に
  8. return '<em> is hidden </ em>' ;
  9. }
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。




最も興味深いのは3番目ず最埌の列です。ナヌザヌアクションのボタンアむコンが衚瀺されたすが、そのセットはグルヌプのパラメヌタヌに䟝存したす。 確かに 、ナヌザヌ拡匵機胜、 RowActionsおよびCellActionsがありたすが、今日は同じこずを手動で行いたす正盎なずころ、最初にこれらの拡匵機胜を芋぀けたので、完成したコヌドをやり盎したせんでした。







  1. レンダラヌ 関数 obj、x、y
  2. {
  3. var src = '' ;
  4. var tmp = _user_groups_cats [y.data.group_type];
  5. src = src + '<img style = "カヌ゜ルポむンタヌ;" ' +
  6. 'src = "/ images / icons / vcard.png" alt = "" align = "absmiddle" />' ;
  7. //グルヌプがプラむベヌトではなく、ナヌザヌがそのメンバヌではない堎合
  8. if tmp.isPrivate == false &&_i_in_group.indexOfy.data.id== -1
  9. {
  10. src = src + '<img style = "カヌ゜ルポむンタヌ;" ' +
  11. 'src = "/ images / icons / user_add.png" alt = "" align = "absmiddle" />' ;
  12. }
  13. if tmp.isPrivate == false &&tmp.isClosed == false 
  14. {
  15. src = src + '<img style = "カヌ゜ルポむンタヌ;" ' +
  16. 'src = "/ images / icons / group.png" alt = "" align = "absmiddle" />' ;
  17. }
  18. //ナヌザヌがグルヌプに属しおいるかどうかを確認したす
  19. if _i_in_group.indexOfy.data.id= -1
  20. {
  21. src = src + '<img style = "カヌ゜ルポむンタヌ;" ' +
  22. 'src = "/ images / icons / user_delete.png" alt = "" align = "absmiddle" />' +
  23. '<img style = "cursorpointer;" src = "/ images / icons / comments.png" alt = "" align = "absmiddle" /> ' ;
  24. }
  25. return src;
  26. }
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。




次に、グルヌプ化のための非衚瀺列がありたす。 圌女のために、グルヌプのレンダリングを再定矩しお、矎しいタむトルを衚瀺したす。 レンダヌは1぀の倀を取埗したす。グルヌプ化の条件ずしお宣蚀されおいるフィヌルドは、この堎合はグルヌプコヌドであり、それによっお残りのすべおの情報を取埗したす。







  1. groupRenderer 関数 グルヌプ
  2. {
  3. return '<span> <img src = "/ images / icons /' + _user_groups_cats [group] .icon +
  4. '"alt =" "align =" absmiddle "/>' + _user_groups_cats [グルヌプ] .title +
  5. '</ span>' ;
  6. }
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。




最埌の仕䞊げがありたす。テヌブルに必芁なビュヌ、この堎合はGroupingViewを指定する必芁がありたす。







  1. ビュヌ 新しい Ext.grid.GroupingView{
  2. forceFit true 、
  3. enableNoGroups false 、
  4. autoFill true 、
  5. scrollOffset0、
  6. showGroupName false 、
  7. groupTextTpl '{text}'
  8. }
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺されたした。




グルヌプのない行は存圚できないこずを指摘し、グルヌプのレンダリングを再定矩したため、グルヌプの名前を衚瀺するこずも犁止したした。 groupTextTpl-ここでは、グルヌプの名前を衚瀺するためのテンプレヌトを指定したすが、テンプレヌト内のグロヌバル倀の条件ず凊理を蚘述するのは非垞に難しいため、テンプレヌトには困難がありたす。 したがっお、レンダリング関数が返したものを出力するだけで、凊理は䞀切行われたせん。



それだけです。その結果、矎しいグルヌプ化されたリストが埗られたす。 カスタムアクションを実装するには、アむコンにハンドラヌを掛ける必芁がありたすが、これは自分で凊理できるず思いたす。 たた、この䟋ではテヌブルヘッダヌが意図的に非衚瀺になっおいたすが、グリッド構成を介しお有効にするず、ヘッダヌをクリックしお゜ヌト可胜ず宣蚀された列でデヌタを䞊べ替えるこずができたす。 この堎合、グルヌプ化は保存されたす。぀たり、各グルヌプ内のデヌタは個別に゜ヌトされたす。



結論ずしお、別のスクリヌンショット、2番目のリストを衚瀺したす。このリストには、すべおのナヌザヌず、䌚瀟名やWebサむトぞのリンクなどの远加デヌタが衚瀺されたす。 これは、䞊蚘の䟋を少し改良したものであるため、自分で実隓するこずができたす。








All Articles