DataGridを使って複数行編集可能なテーブルを実現するでおこなったOutSystems Data Grid動作確認の続き。
OutSystems Data GridはGrapeCityのFlexGridをLow-Codeから使えるようにしたものだが、ベースとなっているFlexGridのオブジェクトを取得し、そのAPIを呼び出せる。
環境情報
Personal Environment(Version 11.18.1 (Build 37884))
Service Studio(Version 11.54.1)
OutSystems Data Grid(Version 2.10.1
実装例
Switchの切り替えで、配置したGridの2行目の表示/非表示を切り替える(この例自体はあくまで例示のみを目的としており、特に意味はない)。
-
Grid BlockのNameプロパティを設定しておく
-
イベントハンドラーのロジックにJavaScript要素を配置し、以下のコードを記述する
var grid = GridAPI.GridManager.GetGridById($parameters.GridId).provider;
grid.rows[1].visible = $parameters.IsSecondRowVisible;
1行目:FlexGridのオブジェクトを取得している。GetGridByIdに渡すIdは、Grid WidgetのIdを渡す(<GridのName>.Idを渡す)
2行目:FlexGridのAPIを使い、Grid内の2行目の可視状態を切り替え。$parameters.IsSecondRowVisibleにはSwitchに紐づけたBoolean型の変数を渡している
基本的には1行目の方法でFlexGridのオブジェクトを取得した後は、FlexGrid自体のAPIを参照して必要な処理を書けばよい。
FlexGrid.rows:Grid内の行オブジェクトのコレクションを取得
Row.visible:Rowの可視状態を取得/更新できる
GridAPIとは
これはOutSystemsが用意したオブジェクトで、Data Gridコンポーネント(Low-Code)とJavaScriptライブラリの仲立ちになるもの、らしい。
OutSystems Forumsの質問Data Grid Reactive - GridFrameworkJSについていたコメントより。
The GridAPI is a layer that mediates communication between the DataGrid component and our JS code.
Data GridのClient Actionで利用
OutSystems Data Gridが提供するClient ActionもGridAPI下のAPIを呼んでいる。
例として、指定の行にValidationを効かせるApplyRowValidations Actionは以下のようにGridAPI下の機能を呼んでいる。
$parameters.ErrorMessage = OutSystems.GridAPI.Cells.ValidateRow($parameters.GridWidgetId, $parameters.RowNumber);
Client ActionはOutSystems.GridAPIのAPIを呼んでいる
「OutSystems.GridAPI」と「GridAPI」は同じ機能を持っていそうだがどう違うかは今のところ不明。念のため、
OutSystems.GridAPI === GridAPI
で比較してみたが、結果はfalseだった。
GridAPIを利用した他の実装例
Google検索してみるといくつか見つかる。
OutSystems DataGrid 虎の巻 - DataGridをJavascriptでカスタマイズする:IMEやセル結合の設定