SHOEISHA iD

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

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

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

AngularJSアプリ開発を支援する便利モジュール

AngularJSアプリでソート/ページングやフィルター機能付きの高機能グリッド表を実装する(UI Grid)

AngularJSアプリ開発を支援する便利モジュール 第3回

データの編集機能を実装する

 UI Gridでは、グリッド上のデータをエンドユーザーに編集させることもできます。

リスト10 データの編集機能を有効にした例(grid_edit.html)
<body ng-controller="MyController">
<div ui-grid="myGrid" ui-grid-edit ui-grid-cellnav></div>
</body>
リスト11 データの編集機能を有効にした例(grid_edit.js)
angular.module('myApp', [ 'ui.grid', 'ui.grid.edit', 'ui.grid.cellNav'])
  .controller('MyController', ['$scope', function($scope) {
    $scope.myGrid = {
      enableCellEditOnFocus: true,
      columnDefs: [
        {
          field: 'cid',
          displayName: '商品コード',
          cellClass: 'strong',
          enableHiding: false,
          enableCellEditOnFocus: false
        },
        ...中略...
        }
      ]
    };
  }]);
該当するセルをクリックすることで編集可能に
該当するセルをクリックすることで編集可能に

 セルの編集機能を実装するには、グリッド要素(<div>要素)に対してui-grid-edit/ui-grid-cellnav属性を付与するとともに、現在のモジュールからからui.grid.edit/ui.grid.cellNavモジュールへの依存性を設定し、enableCellEditOnFocusパラメーターをtrueとします。ただし、商品コード列のように、キー情報は編集させたくない列については、列情報(columnDefs)として、enableCellEditパラメーターにfalseをセットします。

 上の図のように、該当するセルにフォーカスを移動すると、セルが編集可能になることを確認してください。なお、ここでは画面上、セルの値を変更しているだけですが、変更した値はスコープ変数(ここではdata)に反映されていますので、一般的には、これを$httpサービスなどでサーバーに書き戻すことになるでしょう。

データのエクスポート機能を実装する

 UI Gridで整形したデータは、カンマ区切りテキスト/タブ区切りテキストとしてダウンロードさせることもできます。

リスト12 エクスポート機能を有効にする例(HTML:grid_export.html)
<body ng-controller="MyController">
<div ui-grid="myGrid" ui-grid-exporter></div>
</body>
リスト13 エクスポート機能を有効にする例(JavaScript:grid_export.js)
angular.module('myApp', [ 'ui.grid', 'ui.grid.exporter' ])
  .controller('MyController', ['$scope', 'uiGridConstants', function($scope, uiGridConstants) {
    $scope.myGrid = {
      enableGridMenu: true,
      exporterCsvFilename: 'sample.txt',
      exporterCsvColumnSeparator: '\t',
      exporterMenuPdf: false,
      ...中略...
    };
  }]);
右上のボタンからエクスポート操作が可能に
右上のボタンからエクスポート操作が可能に

 エクスポート機能を有効にするには、グリッド要素(<div>要素)に対してui-grid-exporter属性を付与するとともに、現在のモジュールからからui.grid.exporterモジュールへの依存関係を設定してください。

 また、CSVエクスポートに関わるパラメーターとして、以下のようなものを設定しておきます。exporterCsvColumnSeparatorパラメーターを変更することで、たとえばタブ区切りテキストをダウンロードさせることもできます。

エクスポートに関わる主なパラメーター
パラメーター 概要
enableGridMenu グリッド表のメニューを有効化
exporterCsvFilename デフォルトのダウンロードファイル名
exporterCsvColumnSeparator セルの区切り文字(デフォルトは「,」)

まとめ

 以上、本稿ではオブジェクト配列をもとにリッチなグリッド表を生成するUI Gridについて解説しました。UI Gridでは、本稿で紹介した他にも、グループ化、インポート機能、フィルターのカスタマイズ機能などなど、さまざまな機能を提供しています。本家ドキュメントも参照しながら、ぜひがっつりと使い込んでみてください。それだけの価値がある有用なモジュールです。

 次回は、SPA(Single Page Application)開発には欠かせないルーティング機能を実装するUI Routerについて解説します。

参考資料

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
AngularJSアプリ開発を支援する便利モジュール連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

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

WINGSプロジェクト(ウイングスプロジェクト)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8941 2015/09/24 14:00

イベント

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

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

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

メールバックナンバー