忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

JavaScript jQuery w2ui.grid を使ったグリッド処理・セルの書式設定(render)

今回は w2ui.grid のセルの書式設定の方法について説明します。
セルに対して書式を設定する場合は、グリッドのカラム宣言である columns プロパティの中の render プロパティで行います。

render プロパティの定義済みの書式について

render名書式説明
int 整数値
float 浮動小数点数値 float:NN (NNは小数点以下の桁数)
number 浮動小数点数値 number:NN (NNは小数点以下の桁数)
money 金額 $9,999,999 の様にカンマ編集
($ はロケールにより変化する)
currency 金額 $9,999,999 の様にカンマ編集
($ はロケールにより変化する)
percent パーセント 数値をそのままパーセント値として表示(最後に%を付加)
age 年齢
date 日付 date:date_format
(date_formatは日付書式、空の場合はd/m/yyyy)
time 時刻 time:time_format
(time_formatは時刻書式、空の場合はd/m/yyyy)
datetime 日付・時刻 datetime:date_format|time_format
(date_formatは日付書式、time_formatは時刻書式)
toggle 使い方が不明
password パスワード 文字列の数だけ *(アスタリスク)の表示
function レンダリング関数 レンダリング関数:
render: function(record, [index], [column_index]) を宣言できる


それでは、上記の書式で使えそうなものを簡単な例で以下に示します。

<!DOCTYPE html>
<html>
<head>
  <title>w2ui Grid-1</title>
  <meta charset="utf-8" />
  <link rel="stylesheet" type="text/css" media="screen" href="./dist/w2ui.min.css" />
  <script type="text/javascript" src="./libs/jquery/jquery-2.1.4.min.js"></script>
  <script type="text/javascript" src="./dist/w2ui.js"></script>
</head>
<body>
  <div id="grid" style="width: 800px; height: 250px;"></div>

<script>
$(function () {
  // id="grid" へのグリッド設定
  $('#grid').w2grid({ 
    name: 'grid', 
    columns: [
      { field: 'recid',    caption: 'ID'        , size: '40px' , render: 'float:2' },
      { field: 'fname',    caption: 'First Name', size: '80px' },
      { field: 'lname',    caption: 'Last Name' , size: '80px' , render: 'password'},
      { field: 'fullname', caption: 'Full Name' , size: '100px',
            render: function (record) {
                return '<div>' + record.fname + ' ' + record.lname + '</div>';
            }
      },
      { field: 'email',    caption: 'Email'     , size: '20%' },
      { field: 'sdate',    caption: 'Birthday'  , size: '100px', render: 'date:yyyy.mm.dd' },
      { field: 'sdate',    caption: 'age'       , size: '80px' , render: 'age' },
      { field: 'money',    caption: 'Money'     , size: '80px' , render: 'money' },
      { field: 'money',    caption: 'Money'     , size: '80px' , render: 'percent' }
    ], 
    records: [
      { recid: 1, fname: "John"   , lname: "Doe"    , email: "jdoe@gmail.com", sdate: "1980/03/01", money: "1000"  },
      { recid: 2, fname: "Stuart" , lname: "Motzart", email: "smot@gmail.com", sdate: "2000/03/12", money: "200"   },
      { recid: 3, fname: "Jin"    , lname: "Franson", email: "jgra@gmail.com", sdate: "2010/03/13", money: "30000" },
      { recid: 4, fname: "Susan"  , lname: "Ottie"  , email: "sott@gmail.com", sdate: "1980/03/24", money: "40000" },
      { recid: 5, fname: "Kelly"  , lname: "Silver" , email: "ksil@gmail.com", sdate: "1970/03/25", money: "1000"  },
      { recid: 6, fname: "Francis", lname: "Gatos"  , email: "fgat@gmail.com", sdate: "1982/03/26", money: "1500"  },
      { recid: 7, fname: "Mark"   , lname: "Welldo" , email: "mwel@gmail.com", sdate: "2001/03/27", money: "10000" },
      { recid: 8, fname: "Thomas" , lname: "Bahh"   , email: "tbah@gmail.com", sdate: "2000/03/28", money: "10000" }
    ]
  });  
});
</script>
</body>
</html>


これを実行させると以下の様な表示になります。


この例の中で興味深いのは、レンダリング関数を宣言できるところだと思います。
これを使えば各データの属性で色々な表示の変化を関数で処理できます。 例えば、データには区分データしか持っていないが、実際の場合にはそれに対応した文字列を表示したりできます。

レコードデータの中に男女区別のフラグを持ってそれで「男性」「女性」の違いを表示します。

<!DOCTYPE html>
<html>
<head>
  <title>w2ui Grid-1</title>
  <meta charset="utf-8" />
  <link rel="stylesheet" type="text/css" media="screen" href="./dist/w2ui.min.css" />
  <script type="text/javascript" src="./libs/jquery/jquery-2.1.4.min.js"></script>
  <script type="text/javascript" src="./dist/w2ui.js"></script>
</head>
<body>
  <div id="grid" style="width: 500px; height: 250px;"></div>

<script>
//  性別文字列の宣言
var arrSex = {"1": "Male" , "2": "Female"};
$(function () {
  // id="grid" へのグリッド設定
  $('#grid').w2grid({ 
    name: 'grid', 
    columns: [
      { field: 'recid',    caption: 'ID'        , size: '60px' , render: 'float:2' },
      { field: 'fname',    caption: 'First Name', size: '100px' },
      { field: 'lname',    caption: 'Last Name' , size: '100px', render: 'password'},
      { field: 'fullname', caption: 'Full Name' , size: '100px',
            render: function (record) {
                return '<div>' + record.fname + ' ' + record.lname + '</div>';
            }
      },
      { field: 'sex'  ,    caption: 'Sex'       , size: '20%'  ,
            render: function (record) {
                return '<div>' + arrSex[ record.sex ] + '</div>';
            }
      }
    ], 
    records: [
      { recid: 1, fname: "John"   , lname: "Doe"    , sex: "1" },
      { recid: 2, fname: "Stuart" , lname: "Motzart", sex: "1" },
      { recid: 3, fname: "Jin"    , lname: "Franson", sex: "1" },
      { recid: 4, fname: "Susan"  , lname: "Ottie"  , sex: "2" },
      { recid: 5, fname: "Kelly"  , lname: "Silver" , sex: "2" },
      { recid: 6, fname: "Francis", lname: "Gatos"  , sex: "1" },
      { recid: 7, fname: "Mark"   , lname: "Welldo" , sex: "1" },
      { recid: 8, fname: "Nuncy"  , lname: "Bahh"   , sex: "2" }
    ]
  });  
});
</script>
</body>
</html>



これを実行させると以下の様な表示になります。













PR

コメント

コメントを書く