データを含むテーブルを表示するプラグイン。 フレキシグリッド

jQueryプラグイン「 FlexiGrid 」を使用してテーブルを作成します。

経験豊富なプログラマーはすでにこのプラグインに精通していると確信していますが、経験が示すように、一部のプログラマーはまだそのようなことを知りません。



これは、実際にはjQueryの有名なjqGridプラグインに類似しています。



作成者が説明する主な機能は次のとおりです。





コアは、一般的なjqGridと同じですが、インターフェースが異なります。 ここで、選択はすでにどのプラグインがより満足しているかによって異なります=)まだ違いがありますが、より複雑な機能を使用したり、より微妙なカスタマイズが必要な場合は、それらを見つけることができます。

プラグインは次のブラウザでテストされました:IE6 / IE7、Firefox 2、Opera 9.x、Safari 3.0



画像



通常のHTMLテーブルからFlexGridを生成する機能が本当に気に入りました。

たとえば、 1つの墓地と 1つのテーブルがあります。

< table class ="our_tbl" >

< thead >

< tr >

< th > ID </ th >

< th > NAME </ th >

< th > CATEGORY </ th >

< th > DATE </ th >

</ tr >

</ thead >

< tbody >

< tr >

< td > This is data 1 with overflowing content </ td >

< td > This is data 2 </ td >

< td > This is data 3 </ td >

< td > This is data 4 </ td >

</ tr >

</ tbody >

</ table >




* This source code was highlighted with Source Code Highlighter .








このためには、次のコードで十分です。

$( '.our_tbl' ).flexigrid();



* This source code was highlighted with Source Code Highlighter .








この機能を使用するには、次のものが必要です。





さて、ここにPHP実装の実用例があります



そこにあるPHPコードは非常に単純で理想からはほど遠いものですが、一般的な原則は明らかです。







  1. $( "#flex1" ).flexigrid
  2. (
  3. {
  4. url: 'post2.php' 、
  5. dataType: 'json' 、
  6. colModel:[
  7. {display: 'ID' 、name: 'id' 、width:40、sortable: true 、align: 'center' }、
  8. {display: 'ISO' 、名前: 'iso' 、幅:40、ソート可能: true 、align: 'center' }、
  9. {display: 'Name' 、name: 'name' 、width:180、sortable: true 、align: 'left' }、
  10. {display: 'Printable Name' 、名前: 'printable_name' 、width:120、sortable: true 、align: 'left' }、
  11. {display: 'ISO3' 、name: 'iso3' 、width:130、 sortable : true 、align: 'left' 、hide: true }、
  12. {display: 'Number Code' 、名前: 'numcode' 、幅:80、 sortable : true 、align: 'right' }
  13. ]、
  14. ボタン:[
  15. {名前: '追加' 、bclass: '追加' 、onpress:テスト}、
  16. {名前: '削除' 、bclass: '削除' 、onpress:テスト}、
  17. {セパレータ: true }、
  18. {名前: 'A' 、オンプレス:sortAlpha}、
  19. {名前: 'B' 、オンプレス:sortAlpha}、
  20. {名前: 'C' 、オンプレス:sortAlpha}、
  21. {名前: 'D' 、オンプレス:sortAlpha}、
  22. {名前: 'E' 、オンプレス:sortAlpha}、
  23. {名前: 'F' 、オンプレス:sortAlpha}、
  24. {名前: 'G' 、オンプレス:sortAlpha}、
  25. {名前: 'H' 、オンプレス:sortAlpha}、
  26. {名前: 'I' 、オンプレス:sortAlpha}、
  27. {名前: 'J' 、オンプレス:sortAlpha}、
  28. {名前: 'K' 、オンプレス:sortAlpha}、
  29. {名前: 'L' 、オンプレス:sortAlpha}、
  30. {名前: 'M' 、オンプレス:sortAlpha}、
  31. {名前: 'N' 、オンプレス:sortAlpha}、
  32. {名前: 'O' 、オンプレス:sortAlpha}、
  33. {名前: 'P' 、オンプレス:sortAlpha}、
  34. {名前: 'Q' 、オンプレス:sortAlpha}、
  35. {名前: 'R' 、オンプレス:sortAlpha}、
  36. {名前: 'S' 、オンプレス:sortAlpha}、
  37. {名前: 'T' 、オンプレス:sortAlpha}、
  38. {名前: 'U' 、オンプレス:sortAlpha}、
  39. {名前: 'V' 、オンプレス:sortAlpha}、
  40. {名前: 'W' 、オンプレス:sortAlpha}、
  41. {名前: 'X' 、オンプレス:sortAlpha}、
  42. {名前: 'Y' 、オンプレス:sortAlpha}、
  43. {名前: 'Z' 、オンプレス:sortAlpha}、
  44. {名前: '#' 、オンプレス:sortAlpha}
  45. ]、
  46. searchitems:[
  47. {表示: 'ISO' 、名前: 'iso' }、
  48. {display: 'Name' 、名前: 'name' 、isdefault: true }
  49. ]、
  50. sortname: "id" 、
  51. sortorder: "asc" 、
  52. usepager: true 、
  53. タイトル: '国' 、
  54. useRp: true 、
  55. rp:10、
  56. showTableToggleBtn: true 、
  57. 幅:700、
  58. 高さ:255
  59. }
  60. );
  61. });
  62. 関数 sortAlpha(com)
  63. {
  64. jQuery( '#flex1' ).flexOptions({newp:1、 params :[{name: 'letter_pressed' 、value:com}、{name: 'qtype' 、value:$( 'select [name = qtype]' ) .val()}]});
  65. jQuery( "#flex1" ).flexReload();
  66. }
  67. 機能テスト(com、grid)
  68. {
  69. if (com == 'Delete' )
  70. {
  71. if ($( '.trSelected' 、grid).length> 0){
  72. if (confirm( 'Delete' + $( '.trSelected' 、grid).length + 'items?' )){
  73. var items = $( '.trSelected' 、グリッド);
  74. var itemlist = '' ;
  75. for (i = 0; i <items.length; i ++){
  76. itemlist + = items [i] .id.substr(3)+ "、" ;
  77. }
  78. $ .ajax({
  79. タイプ: "POST" 、
  80. dataType: "json" 、
  81. url: "delete.php" 、
  82. データ: "items =" + itemlist、
  83. 成功: 関数 (データ){
  84. alert( "クエリ:" + data.query + "-影響を受ける行の合計:" + data.total);
  85. $( "#flex1" ).flexReload();
  86. }
  87. });
  88. }
  89. } else {
  90. falseを 返し ます 。
  91. }
  92. }
  93. else if (com == 'Add' )
  94. {
  95. アラート( 「新規アイテムアクションの追加」 );
  96. }
  97. }
*このソースコードは、 ソースコードハイライターで強調表示されました。




およびPHPコード:







  1. <? php
  2. 関数 countRec ($ fname 、$ tname 、$ where ){
  3. $ sql = "SELECT count($ fname)FROM $ tname $ where" ;
  4. $ result = runSQL ($ sql );
  5. while ($ row = mysql_fetch_array ($ result )){
  6. return $ row [ 0 ];
  7. }
  8. }
  9. $ ページ = $ _POST [ 'ページ' ];
  10. $ rp = $ _POST [ 'rp' ];
  11. $ sortname = $ _POST [ 'sortname' ];
  12. $ sortorder = $ _POST [ 'sortorder' ];
  13. if (!$ sortname )$ sortname = 'name' ;
  14. if (!$ sortorder )$ sortorder = 'desc' ;
  15. if ($ _POST [ 'query' ]! = '' ){
  16. $ where = " WHERE` " 。$ _POST [ 'qtype' ]。 "` LIKE '% " 。$ _POST [ ' query ' ]。 '%' " ;
  17. } else {
  18. $ where = '' ;
  19. }
  20. if ($ _POST [ 'letter_pressed' ]! = '' ){
  21. $ where = " WHERE` " 。$ _POST [ 'qtype' ]。 "` LIKE '" 。$ _POST [ ' letter_pressed ' ]。 '%' " ;
  22. }
  23. if ($ _POST [ 'letter_pressed' ] = = '#' ){
  24. $ where = " WHERE` " 。$ _POST [ 'qtype' ]。 "` REGEXP '[[:digit:]]' " ;
  25. }
  26. $ sort = "ORDER BY $ sortname $ sortorder" ;
  27. if (!$ page )$ page = 1 ;
  28. if (!$ rp )$ rp = 10 ;
  29. $ start =(($ page-1 )* $ rp );
  30. $ limit = "LIMIT $ start、$ rp" ;
  31. $ sql = "SELECT id、iso、name、printable_name、iso3、numcode FROM country $ where $ sort $ limit" ;
  32. $ result = runSQL ($ sql );
  33. $ total = countRec ( 'iso' 、 'country' 、$ where );
  34. header ( "Expires:Mon、26 Jul 1997 05:00:00 GMT" );
  35. header ( "Last-Modified:" 。 gmdate ( "D、d MYH:i:s" )。 "GMT" );
  36. header ( "Cache-Control:no-cache、must-revalidate" );
  37. header ( "プラグマ:no-cache" );
  38. header ( "Content-type:text / x-json" );
  39. $ json = "" ;
  40. $ json 。= "{\ n" ;
  41. $ json 。= "page:$ page、\ n" ;
  42. $ json 。= "total:$ total、\ n" ;
  43. $ json 。= "行:[" ;
  44. $ rc = false ;
  45. while ($ row = mysql_fetch_array ($ result )){
  46. if ($ rc )$ json 。= "、" ;
  47. $ json 。= "\ n {" ;
  48. $ json 。= "id: '" 。$ row [ ' id ' ]。 「 '、」 ;
  49. $ json 。= "cell:['" 。$ row [ ' id ' ]。 "'、'" 。$ row [ 'iso' ]。 「 '」 ;
  50. $ json 。= "、 '" 。 スラッシュ ($ 行 [ '名前' ])を追加します。 「 '」 ;
  51. $ json 。= "、 '" 。 スラッシュ ($ 行 [ 'printable_name' ])を追加します。 「 '」 ;
  52. $ json 。= "、 '" 。 スラッシュ ($ 行 [ 'iso3' ])を追加します。 「 '」 ;
  53. $ json 。= "、 '" 。 スラッシュ ($ 行 [ 'numcode' ])を追加します。 "']" ;
  54. $ json 。= "}" ;
  55. $ rc = true ;
  56. }
  57. $ json 。= "] \ n" ;
  58. $ json 。= "}" ;
  59. echo $ json ;
  60. ? >
*このソースコードは、 ソースコードハイライターで強調表示されました。




例からコードを取りましたが、自分でやり直したわけではありません。やり直すことができるものがたくさんあります。特に不便なjson文字列アセンブリです。 json_encode()関数を使用する方がはるかに便利です。



通常、このような種類のテーブルはあまり拡張できませんが、たとえば、管理パネルページは非常に便利で、最も重要なのは迅速です。



PS: 私のブログのクロスポスト



All Articles