jqGridをJSONで使うときに設定したい7項目
1. ダウンロードするときは全部入りを選びましょう
jqGridはダウンロード時に選んだ内容から最適化したコードを作成してくれます。これはとてもありがたいのだけれど、機能が必要になるたびダウンロードするのは面倒じゃない。最初から全部選んじゃいましょ。チェックするのが面倒な時はDemoもおすすめ。
2. mtypeはPOSTにしましょう。
datatypeがJSONの時にはmtypeはPOSTに設定しましょう。どうしてもGETを使いたかったらJSONの先頭に「while(1);」をいれてね。jqGridが適切に対処してくれます。
'datatype' : 'json', 'mtype' : 'POST'
3. loadErrorイベントを設定しましょう。
なにかエラーがあってもずっと「読み込み中」表示になって止まってません?
'loadError' : function (xhr, status, error) { alert(xhr.statusText) }
と設定するだけでも結構違いますよ。
4. navGrid等を使用して操作するときはerrorTextFormatを設定しましょう。
エラーメッセージが悪いからって言われたらむっとくるよね。
$('grid').jqGrid("navGrid", "#pager", { edit: true, add: true, del: true, search: true, refreshstate: "current"}, {'errorTextFormat' : function (xhr) {alert(xhr.statusText)}}, // edit {'errorTextFormat' : function (xhr) {alert(xhr.statusText)}}, // add {}, // delete {multipleSearch: true, closeAfterSearch: true} // search ); /* xhrのプロパティ一覧 status timeout ontimeout responseXML responseBody onreadystatechange readyState responseText statusText abort */
5. 検索とか編集をセレクトボックスでできるようにしましょう。
一個ずつ設定するのがめんどうだけれど、しょうがないね
var bloodtypes = 'A:A型;B:B型;O:O型;AB:AB型;N:不明'; // 最後注意;は無し 'colModel' : [ {'name':'bloodtype', 'label':'血液型', 'editable':true, 'edittype':'select', 'editoptions': { 'value':bloodtypes }, 'search':true, 'stype':'select' , 'searchoptions': { 'value':bloodtypes } } ]
6. 日付は選択できるようにしましょう
JQueryUI.datepickerの日本語化も忘れずにね。
var datepicker = function(e) { setTimeout(function() { $(e).datepicker({dateFormat: "yy-mm-dd"}); $('.ui-datepicker').css({"font-size":"70%"}); },100); }; 'colModel' : [ {'name':'birthday', 'label':'誕生日', 'editable':true, 'editoptions': { 'dataInit': datepicker }, 'editrules': { 'date': true }, 'search':true, 'searchoptions': { 'dataInit': datepicker } } ]
7. 公式WikiとForumを読もう
しっかり読めばそんなにはまらないで使えるまともなドキュメントがそろっています。頭の設定です、うん。
Wikiのjqriddocs - http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jqgriddocs
Forum1 - http://www.trirand.com/blog/?page_id=393
Forum2 - http://www.trirand.net/forum/default.aspx?g=forum
2011/01/31追記
ほかにもjqGridについて書いているのでよかったら見て行ってね!
jqGridについての記事一覧
メモ
jqGrid for PHP で js:function というのがある。
ソースを見てPHP側でやっているかJavascript側でやっているかを知りたい。
http://blog.ivanvillareal.info/development/php-development/decrypting-source-cop-php-files/
Javascript側の実行時に「eval('false||' + opt.dataInit)(val)」とかしてくれると最高なんだけれど。