本記事では、OutSystemsにおけるData Gridの実装手順をご紹介します。
Data Gridの機能概要については「【OutSystems 11】 使い慣れたグリッド形式で大量のデータを表示・編集⁉ ~Data Grid概要編~」に掲載しています。ぜひ合わせてお読みください。
目次
1. Data Gridチュートリアル
1-1. 使用するデータと完成イメージ
あらかじめ用意したEmployeeテーブル(従業員情報を格納するマスタのイメージ)を使用し(図1)、Data Gridに以下の機能を持たせたグリッドの実装方法を解説します(図2)。Employeeテーブルに関しては、以下はあくまで参考です。任意のEntityでも構いません。なお、今回実装するアプリはReactive Webアプリを前提としています。
- グリッド上でのデータ編集
- 行追加、行削除、変更の保存
- データソートの設定
- フィルターの設定
図1
図2
1-2. Forgeの追加と参照設定
事前にService StudioのForgeタブから、Data Gridのインストールを行う必要があります(図3)。
図3
Forgeのインストールについては「超高速開発基盤「OutSystems」のForgeの使い方」に掲載しています。ぜひ合わせてお読みください。
Service Studioから「Manage Dependencies」ダイアログを開き(図4)、Data Gridへの参照を追加します(図5)。今回は「OutSystems Data Grid」を選択し、すべての機能を追加します。
図4
図5
1-3. Data Gridに表示するデータの作成
Data Gridで取り扱うデータ型はJSON形式である必要があるため、グリッドで表示するデータを取得し、形式を変換して出力するDataActionを作成します(図6)。
DataActionには「EmployeeList(text型)」と、「IsFetched(Boolean型)」の2つのOutputパラメーターを作成します。
Logicタブの「Server Actions」に追加された「OutSystemsDataGrid」内にあるArrangeDataアクションを使ってJSON形式に変換します。
変換した結果のデータ(ArrangeData.DataJSON)と、データ取得結果(ArrangeData.Success)をDataActionの戻り値に設定します(表1)。
なお、ArrangeDataは、Data GridのForgeに同梱されているサーバーアクションです。このアクションは、引数として受け取ったデータを分析し、数値型や日付型などを判別した上で、グリッドに渡せるJSON形式へ自動で変換します。
図6
①Aggregateで、データを取得する。
②サーバーアクション内、ArrangeDataアクションを用いてJSON形式に変換する。
※ArrangeDataの引数にはオブジェクト型の値を指定する必要があるため、ToObject(対象のデータ)を用いてオブジェクト化する。
③変換したデータと、変換完了を示す変数をAssignで出力値に指定する。
表1
設定する値の形式 |
詳細 |
|
ArrangeData.DataJSON |
Text型 |
ArrangeDataによってJSON形式に変換されたデータ |
ArrangeData.Success |
Boolean型 |
ArrangeDataによってデータ形式の変換が完了したかを表す |
1-4. 画面にGridを表示
「Grid」ウィジェットを画面にドラッグ&ドロップし(図7)、Gridのプロパティを設定することで(表2)画面の表示が完了します(図8)。GridのUIパーツが見つからないときは、下記(図7)のように検索してみてください。この時点では、まだソートや行追加、行削除、変更の保存はできません。後述の1-5で、それらのプロパティ設定とアクションを作成することで、ソートや行追加などができるようになります。また、GridのUIパーツを設定した際には、プロパティの「Name」を入力してください。後述の1-5以降で「GridWidgetId」プロパティ欄に適時利用されます。
図7
表2
設定する値の形式 |
詳細 |
|
Name |
型指定なし |
画面やアクション内等で、Gridウィジェットを一意に識別するための名前を設定する |
Data |
Text型 |
Gridに表示するデータを指定 |
IsDataFetched |
Boolean型 |
データの取得が完了したかを表す |
図8
1-5. データ操作のロジック作成
行追加や行削除、変更の保存には、そのためのアクションを作成します。
なお、行追加や行削除のアクションはGrid上のデータを操作するものです。画面を操作した結果のデータ更新処理は、「変更の保存」ボタンを押すと実行されます。
1-5-1. Gridのプロパティを設定
Gridでデータを編集できるようプロパティを設定します(図9)。詳細設定は、Gridのプロパティ「OptionalConfigs」を展開すると表示されます。ここで対象のプロパティをTrueに設定すると、データの編集やソート順の変更が可能になります(表3)。
図9
表3
設定する値の型、形式 |
詳細 |
|
AllowColumnEdit |
Boolean型 |
データの編集を許可するかを設定 |
AllowColumnSort |
Boolean型 |
データのソートを許可するかを設定 |
1-5-2. 行追加のロジック作成
画面に「追加」ボタンを配置し、OnClickプロパティには、新しいクライアントアクションを作成します。作成したクライアントアクションに「Logicタブ>Client Actions」に追加されている「OutSystemsDataGrid」内から「AddNewRows」ウィジェットを配置し、プロパティを設定してください(図10)(表4)。
①は、Data Gridに行を追加するための「AddNewRows」アクションです。このアクションは、指定した数だけ行をGridに追加します。
ボタンを追加する箇所については特に指定はありませんが、今回は完成イメージ(図2)の位置にボタンを置きます。
※ボタン及びクライアントアクションの作成方法は、後述の行削除(1-5-3で説明)、変更保存(1-5-4で説明)も同様です。
図10
表4
設定する値の型、形式 |
詳細 |
|
GridWidgetId |
Text型 |
新しい行を追加するGridの「Name.Id」を指定する |
NumberOfRows |
Integer型 |
追加したい空行の数を指定 |
1-5-3. 行削除のロジック作成
1-5-2同様、画面に「削除」ボタンを配置し、作成したクライアントアクションに「RemoveSelectedRows」ウィジェットを配置しプロパティを設定します(図11)(表5)。
①はData Gridの行を削除するための「RemoveSelectedRows」アクションです。このアクションは、選択された行(左上に三角がついている行)をGridから削除します。
図11
表5
設定する値の型、形式 |
詳細 |
|
GridWidgetId |
Text型 |
行を削除したいGridの「Name.Id」を指定する |
1-5-4. 変更保存のロジック作成
1-5-2同様、画面に「保存」ボタンを配置し、作成したクライアントアクションに「GetChangedLines」ウィジェットを配置しプロパティを設定します(図12)(表6)。
図12
表6
設定する値の型、形式 |
詳細 |
|
GridWidgetId |
Text型 |
変更を保存したいGridの「Name.Id」を指定する |
①GetChangedLinesアクションを用いて、編集された行を自動で取得する。
※GetChangedLinesアクションは、ユーザーによって追加、削除、変更された行を3つにわけて取得する。出力型はテキスト型。
②GetChangedLinesで取得したデータを追加・削除・変更ごとに元のList形式に戻す。
③上記②で取得した追加、削除、変更の3つの「JSONDeserialize」の結果をもとに、該当Entityを更新する。
※以下は、SaveGridDataというServer Actionを作成し、そのActionの引数として3つのJSONDeserializeの結果を引き渡して該当Entityを更新している一例である。(図13)
④DataActionをリフレッシュし、画面を更新する。
図13
2.まとめ
これでData Grid上での編集・ソートが可能なグリッドが完成しました。
Data Gridの基本的な使い方は以上になります。
ぜひ皆さまも本記事を元に、Data Gridの実装をお試しください。
tdiはローコード開発に力を入れていますので、ご興味をお持ちいただけましたら、以下のサービスページよりお気軽にお問い合わせください。
OutSystems® とロゴはOutSystems-Software Em Rede S.A.の登録商標です。
執筆者プロフィール
- tdi OutSystems推進室
- OutSystemsの持つ奥深さに、日々エンジニアとしての探求心を刺激されています。仕事の楽しさを感じながら、これからも学び続ける姿勢を大切にしていきたいです。