SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「Dojo道場」~実用アプリ構築のためのベストプラクティス

Dojo道場 ~ 第3回「DataGridをもっと使いこなす」

「Dojo道場」~実用アプリ構築のためのベストプラクティス

データのフィルタリング

 次はDataGridのデータをキーワードなどを入力してフィルタリングする機能を実装してみましょう。フィルタリングはDataGridに表示されるデータの数が多い場合に、すばやく望みのデータにアクセスする手法として有効です。DataGridはfilterメソッドを提供していますので、ユーザーの入力を受け付けるテキスト・ボックスを用意して、このメソッドを呼び出すだけで、フィルタリング機能が実現できます。filterメソッドには、DataGridが利用しているデータAPIを呼び出すためのクエリ情報を指定します。このクエリ情報の指定方法はデータAPIを提供するデータ・ストアによって異なりますが、ここで利用しているItemFileReadStoreではフィルタリングに使うフィールド名とワイルドカード("*")を含む値を指定したオブジェクトを渡すことができます。

function setupTextBox(){
    var myDataGrid = dijit.byId("myDataGrid");
    dojo.connect(dijit.byId("myTextBox"), "onChange", function(value){
        var query = {email: value + "*"};
        myDataGrid.filter(query);
    });
};

dojo.addOnLoad(setupTextBox);

 上記のコードは、入力した文字で始まるメールアドレスが含まれるデータを表示するためコールバックをテキスト・ボックスに追加しています。このコールバックを追加したテキスト・ボックスを作成して表示してみます。

実行結果
実行結果

 テキスト・ボックスに"t"とすると、"t"で始まるメールアドレスを持つデータのみが表示されます。

実行結果
実行結果

セルに他のウィジェットを表示

 これまでサンプル・コードで実装してきたformatter関数は、テキスト文字列やHTMLマークアップを生成して、セルにHTMLの要素やテキストを表示するものでしたが、セルの中にボタンなど他のウィジェットを表示したい場合もあります。Dojo 1.4からはformatter関数が文字列の変わりにウィジェットを生成することも可能になったので、簡単にウィジェットをセルの中に埋め込むことができます。以下のコードはボタンのウィジェットを生成するformatterの例です。

function myButtonFormatter(value){
    var button = new dijit.form.Button({label: value});
    button.connect(button, "onClick", function(){
        // アプリケーションの処理
    });
    return button;
};

 例えば、このformatter関数をメールアドレスのセルの定義に指定して実行すると、メールアドレスをラベルに指定したボタンが表示されます。

実行結果
実行結果

次のページ
EnhancedGrid

この記事は参考になりましたか?

「Dojo道場」~実用アプリ構築のためのベストプラクティス連載記事一覧

もっと読む

この記事の著者

野口 雅人(ノグチ マサト)

日本アイ・ビー・エム株式会社 ソフトウェア開発研究所 シニア・テクニカ ル・スタッフ・メンバー1990年、日本IBM入社。ホームページ・ビルダー、Rational Application Developer などの製品開発に従事。現在はWeb 2.0/RIA関連のソフトウェア開発を担当。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5640 2010/12/27 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー