はじめに
多彩なDojo Toolkitの機能の中でも、ビジネス・アプリケーションの構築に欠かせないコンポーネントとして、以前の記事『Dojo ToolkitのDataGridを使いこなす』でも取り上げたDataGrid。典型的な表形式データの表示、編集機能に加えて、行、カラム表示のカスタマイズや新たに追加されたEnhancedGrid、TreeGridといった派生クラスの機能など、前回ご紹介しきれなかった機能、利用法がまだまだあります。今回は実際のアプリケーションの要件を満たすための一歩進んだ機能を解説します。
DataGridの作成
はじめに、以前の記事のサンプル・コードでDataGrid作成の基本をおさらいしましょう。
- DataGridを利用するには、まず最初にDataGridモジュールを読み込みます。
- DataGridは、前回の記事でも紹介したDojo ToolkitのデータAPIを利用してデータにアクセスしますので、DataGridに表示するデータ用のデータ・ストアを作成します。
- 画像のURLや日付などの数値情報を分かりやすく表示するために formatter関数を定義します。
- カラムごとの情報を記述してDataGridのビューを定義します。上記のformatter関数もここでカラムと結び付けます。
- 最後にHTMLマークアップで、データ・ストアやビューの定義を指定して、DataGridを作成します(DataGridの作成はJavaScriptでも行えます)。
dojo.require("dojox.grid.DataGrid");
また、スタイルシートを記述する箇所で、DataGridのスタイルシートも読み込んでおきます。今回はDojo 1.5で追加されたclaroテーマ用のスタイルシートを使います。
@import "../dojo-release-1.5.0/dojox/grid/resources/claroGrid.css";
var myDataStore = new dojo.data.ItemFileReadStore({data: {items: [
{name: "鈴木一郎", email: "suzuki@ibm.com",
birthDate: 250555200000, photo: "images/photo1.gif", group: 3},
(中略)
]}});
function myDateFormatter(date){
if(!date) return "";
return dojo.date.locale.format(new Date(date), {fullYear: true, selector: "date"});
};
function myGroupFormatter(group){
switch(group){
case 1: return "家族";
case 2: return "友人";
case 3: return "会社";
default: return "";
}
};
function myImageFormatter(url){
if(!url) url = dojo.moduleUrl("dojo", "resources/blank.gif").toString();
return "<img width='40' height='40' src='" + url + "'/>";
};
var myStructure = [
{cells: [
{name: "画像", field: "photo", width: "50px",
formatter: myImageFormatter},
{name: "名前", field: "name", width: "auto"},
{name: "メールアドレス", field: "email", width: "auto"},
{name: "生年月日", field: "birthDate", width: "auto",
formatter: myDateFormatter},
{name: "グループ", field: "group", width: "60px",
formatter: myGroupFormatter}
]}
];
<table dojoType="dojox.grid.DataGrid" id="myDataGrid"
style="width: 500px; height: 200px;"
store="myDataStore" structure="myStructure"></table>
以上の手順で以下のようなDataGridが表示されます。

