flexigridと戯れる
jQueryプラグインのFlexigridを使ってみた。
テーブルがカッコイクなった(ΦωΦ)
配布サイトの内容を要約すると。
ただただ格好良くしたいだけの場合
$("table").flexigrid()
引数付きで格好良くしたい場合
$("table").flexigrid({
height : 'auto',
striped : false
});
Ajaxでデータを取ってきて格好良くしたい場合
$("#flex1").flexigrid({
url: 'post2.php',
dataType: 'json',
colModel : [
{display: 'ISO', name : 'iso', width : 40, sortable : true, align: 'center'},
{display: 'Name', name : 'name', width : 180, sortable : true, align: 'left'},
{display: 'Printable Name', name : 'printable_name', width : 120, sortable : true, align: 'left'},
{display: 'ISO3', name : 'iso3', width : 130, sortable : true, align: 'left', hide: true},
{display: 'Number Code', name : 'numcode', width : 80, sortable : true, align: 'right'}
],
buttons : [
{name: 'Add', bclass: 'add', onpress : test},
{name: 'Delete', bclass: 'delete', onpress : test},
{separator: true}
],
searchitems : [
{display: 'ISO', name : 'iso'},
{display: 'Name', name : 'name', isdefault: true}
],
sortname: "iso",
sortorder: "asc",
usepager: true,
title: 'Countries',
useRp: true,
rp: 15,
showTableToggleBtn: true,
width: 700,
height: 200
});
フムフム。ってサーバーサイドはどのように。。。
ここ見てください的なところ見てみた。【ここ】
Perlのサンプルコード載ってないのね orz
ってことで脳内の和英translatorがパンクしそうだったんで
サンプルコードとリクエストとレスポンスを基に解析スタート
flexigridの引数
width
- 幅ですね。ハイ。autoも指定できる。
- デフォルトは 'auto'
height
- 高さですね。ハイ。 autoも指定できる。
- デフォルトは 200
striped
- ストライプ表示するか。
- デフォルトは true
novstripe
- true で縦の区切り線を消す。
- 消している状態で行を選択すると、選択している行の区切り線が青くなる。
- デフォルトは false
minwidth
- 各カラムの最小の幅
- デフォルトは 30
minheight
- テーブルの最小の高さ
- デフォルトは 80
resizable
- リサイズできるようにするか
- デフォルトは true
url
- Ajaxで通信する際のURL
- デフォルトは false
method
- リクエストの形式
- デフォルトは 'POST'
errormsg
- データ取得をミスったときのメッセージ
- デフォルトは 'Connection Error'
usepager
- ページング機能を使うかどうか
- デフォルトは false
nowrap
useRp
- 表示件数の選択ボックスを使うかどうか
- デフォルトは true
rp
- 初期の表示件数
- rpOptionsを指定するときは配列に存在する値にしておくこと。
- デフォルトは 15
rpOptions
- 表示件数の選択ボックスの選択肢(配列で指定)
- 例)[10,50,100]
- デフォルトは [10,15,20,25,40]
title
- 表のタイトルを指定する。
- 指定時には表の上側に表示される。
- falseの場合は表示しない
- デフォルトは false
pagestat
- 開始行、終了行、総行数を表示する文字列。
- 開始行は {from} の文字列が変換される。
- 終了行は {to} の文字列が変換される。
- 総行数は {total} の文字列が変換される。
- デフォルトは 'Displaying {from} to {to} of {total} items'
procmsg
- 通信中に表示するメッセージ
- デフォルトは 'Processing, please wait ...'
nomsg
- 0行の場合に表示するメッセージ
- デフォルトは 'No items'
minColToggle
- カラムを表示/非表示にする際の最低表示数を指定する。
- デフォルトは 1
showToggleBtn
- カラムを表示/非表示できるようにするか
- デフォルトは true
hideOnSubmit
- デフォルトは true
autoload
- デフォルトは true
blockOpacity
- デフォルトは 0.5
onToggleCol
- デフォルトは false
onChangeSort
- デフォルトは false
onSuccess
- デフォルトは false
onSubmit
- デフォルトは false
colModel
- 表示する各カラムについて定義する。
- オブジェクトの配列で指定する。[ {} , {} , {}]みたいな
- 各オブジェクトは下記の通りに定義する。
- display : テーブルに表示するカラム名
- name : サーバへのリクエスト時に使用するカラム名
- width : カラムの幅
- sortable : ソートできるようにするか。
- align : ナニ寄にするか。'left','center','right'で指定する。
例)
colModel : [
{display: 'Name', name : 'name', width : 100, sortable : true, align: 'left'},
{display: 'Feature', name : 'feature', width : 200, sortable : false, align: 'left' },
{display: 'Birth day', name : 'birth_day', width : 50, sortable : true, align: 'center'}
]
buttons
- テーブル上部に表示するボタンについて定義する。(下部はページングボタン,検索ボタン等が表示されている)
- オブジェクトの配列で指定する。[ {} , {} , {}]みたいな
- 各オブジェクトは下記の通りに定義する。
- name : ボタンに表示するメッセージ
- bclass : ボタン要素のクラス名
- onpress : ボタンを押した際に実行するfunctionを指定する
- separator : trueを指定するとボタンの代わりに区切り線が表示される。
例)
buttons : [
{name: 'Add', bclass: 'add', onpress : add_func},
{separator: true},
{name: 'Delete', bclass: 'delete', onpress : del_func},
{separator: true}
]
searchitems
- 検索機能を使う場合に定義する。
- 検索機能を使うとテキストボックス、検索対象のカラムを選択するセレクトボックス、クリアボタンが表示される。
- 配列のオブジェクトで指定する。[ {} , {} , {}]みたいな
- 各オブジェクトは下記の通りに定義する。
- display : 検索対象のカラム名
- name : サーバへのリクエスト時に使用する検索対象のカラム名
- isdefault : 検索機能使用時にデフォルトで選択するかどうか。trueで選択する。
例)
searchitems : [
{display: 'Name', name : 'name', isdefault:true},
{display: 'Feature', name : 'feature' }
]
params
- サーバーへのリクエスト時に追加でパラメータを渡したいときに指定できる。
- サンプルコードに書いてなかったので解析してよかったε=( ̄。 ̄;A
- 配列のオブジェクトで指定する。[ {} , {} , {}]みたいな
- name : パラメータのキー名
- value : パラメータの値
例)
一風変わった指定方法だぬん(ΦωΦ)
params : [
{ name : "id" , value : "12345" } ,
{ name : "pass" , value : "67890"}
]
singleSelect
- trueにすると行の選択を単一にできる。
- デフォルトは false
リクエストパラメータ
- 下記のパラメータがサーバに飛んでくるのでサーバ側の処理を実装する。
page
- ページインデックス(5ページ目の場合 '5')
qtype
- 検索対象のカラム名(検索機能)
query
- 検索する文字列(検索機能)
rp
- 取得する行数
sortname
- ソートするカラム名(ソート機能)
sortorder
- ソートの種類 'asc'か'desc'(ソート機能)
レスポンスの形式
- 下記の形式で返すとflexigridが巧い事表示してくれる。
page
- リクエストで飛ばしたのと同じ
total
- 総行数。
rows
- 配列のオブジェクトで指定する。[ {} , {} , {}]みたいな
- 各オブジェクトは下記の通りに指定する。
- id : 行の識別子。他の行の識別子と重複しなければ何でも良いかも。
- cell : 配列で指定する。colModelで指定した配列の長さと相違の無いように注意する。
レスポンスの例)
HTMLタグもテーブル内で反映されるっぽい。<a>と<br />使えマスタ。
{
page : 1 ,
total : 3 ,
rows : [
{
id : "1",
cell : ["Kate","7cmを超える金魚を買っている","2003/1/2"]
} ,
{
id : "2",
cell : ["Tom","右肩が下がっていることが多い。<br />枝豆のにおいがする。","2003/1/2"]
} ,
{
id : "3",
cell : ["Mike","口呼吸なため、気管支系統が弱い。","2003/1/2"]
}
]
}
まだまだ引数に与えるものがありそうなので適宜更新シマツ