【コマンド】リストビューの操作-Forguncy(フォーガンシー)
また、本記事の内容についてはサンプルアプリのご提供も行っております。
サンプルアプリをご希望の場合はこちらよりご連絡ください。
◆1.処理の種類
リストビューの操作コマンドを選択すると、対象のリストビューに対して行う処理の種類を選択することができます。
処理の種類としては、下記があります。
<行操作>
・更新
・追加
・挿入
・削除
<データ>
・リストビューの更新確定
・再読み込み
・更新処理の許可設定を変更
<選択>
・カレントレコードの行番号の取得
・列番号の取得
・選択行番号の取得
・セルの選択
・すべての行選択を解除
・すべての行を選択
・行の選択を追加
・行の選択を解除
<セル>
・値の取得
・表示テキストの取得
・値の設定
・表示テキストの設定
<列操作>
・列の非表示
・列の表示
<状態>
・状態の保存
・状態の復元
今回は上記の中から、行操作「更新」、データ「リストビューの更新確定」、選択「カレントレコードの行番号の取得」、セル「値の取得」、列操作「列の非表示」の処理を使用して、ステータスによるリストビューの更新制御を行います。
◆2.リストビューの操作を使用する具体的な事例
案件が登録されているリストビューがあるとします。
案件のステータスには、未着手、申請中、承認済、中止が選択できるようになっています。
データベースに登録されている「現状のステータス」と、画面上で選択している「選択中のステータス」による条件で、ステータス列の更新を制御します。
また、画面上では非表示にしていますが、「変更前ステータス」による条件で、案件名列の更新を制御します。
ステータスによる条件は下記になります。
<ステータス列について>
①現状のステータスが「承認済」の場合 かつ 選択中のステータスが「中止」以外の場合
→「中止」ステータスのみ選択可能とします。
中止以外が選択された場合、元の値(データベースに登録されている、現状のステータスの値)に戻す処理を行います。
現状のステータスが「承認済」のデータについて、コンボボックスのドロップダウンリストを開きます。

コンボボックスから「未着手」を選択すると・・・

アラートが表示されて・・・

現状のステータス「承認済」に戻ります。

②現状のステータスが中止の場合
→ステータス選択は不可とします。
どのステータスが選択された場合でも、現状のステータスに戻す処理を行います。
<案件名列について>
①変更前ステータスが承認済以上(「承認済」または「中止」)の場合
→案件名の変更は不可とします。
データベースに登録されている元の案件名の値に戻す処理を行います。
変更前ステータスが「承認済」の案件名を更新しようとすると・・・

アラートが表示されて・・・

案件名が、元の値に戻ります。

◆3.コマンドの中身について説明
<ステータス列に設定したコマンド>
ステータス列に設定したコマンドは、下図の通りです。各コマンドについてみていきましょう。

①変数の設定
→データベースに登録されているステータスのデータを取得し、変数「現状のステータス」に設定します。
②リストビューの操作:カレントレコードの行番号の取得

→後続の処理「リストビューの操作:値の取得」で使用するため、カレントレコードの行番号を取得し、変数「行番号」に設定します。
この変数は後続のコマンドで使用できます。
処理の種類で「カレントレコードの行番号の取得」を選択すると、自動的に行番号の保存先には「行番号」と表示されます。
③リストビューの操作:値の取得

→②で取得した行番号を元に、ステータス列のコンボボックスで選択されたステータスを取得し、変数「選択中のステータス」に設定します。
この変数は後続のコマンドで使用できます。
今回はリストビューに「ステータス」という列名を付けているため、列名を設定していますが、列番号でも可能です。
列番号の場合は、0から始まり、行ヘッダーや選択列も数に含まれるため注意が必要です。
④条件分岐:If
・現状のステータスが「承認済」 かつ 選択中のステータスが「中止」以外の場合
④-1 JavaScriptコードの実行
→「以下のステータスのみ選択可能です。・中止」というアラートを表示します。
リストビューのコマンドには「メッセージの表示」がないため、「JavaScriptコードの実行」コマンドを使用しています。
④-2 リストビューの操作:更新

→ステータス列(F6セル)について、①で取得した「現状のステータス」のデータに戻す処理を行います。
この操作単体では、データベースのデータは更新されません。
登録ボタン押下時に実行する操作「リストビューの更新確定」で、操作したデータをデータベースに反映できます。
更新対象レコードはカレントレコードを選択します。
リストビューは下図の通り、「編集を許可」、「リストビューのデータを即時更新しない」に設定しています。

⑤条件分岐:Else If
・現状のステータスが「中止」の場合
⑤-1 JavaScriptコードの実行
→「ステータス選択は不可です。」というアラートを表示します。
⑤-2 リストビューの操作:更新
④-2と同様の処理を行います。
<案件名列に設定したコマンド>
案件名列に設定したコマンドは、下図の通りです。各コマンドについてみていきましょう。

①変数の設定
→データベースに登録されている案件名のデータを取得し、変数「元の値」に設定します。
②条件分岐:If
・変更前ステータスが「承認済」 または 「中止」の場合
②-1 JavaScriptコードの実行
→「変更前ステータスが承認済以上のため、入力不可です。」というアラートを表示します。
②-2 リストビューの操作:更新
案件名列について、①で取得した「元の値」のデータに戻す処理を行います。
<登録ボタンに設定したコマンド>
①リストビューの操作:リストビューの更新確定

→リストビューに行った変更を、データベースに更新します。
ステータス列に設定したコマンド④-2で前述した通り、リストビューの操作コマンドを使用して更新した場合、データベースにすぐには反映されません。
上記のように処理の種類を「リストビューの更新確定」に設定することで、データベースが更新されます。
②メッセージの表示
→「登録しました。」のメッセージを表示します。
<ページロード時に設定したコマンド>
①リストビューの操作:列の非表示

案件名の更新制御で使用する「ステータス(変更前)」列は、画面上で更新不要のため、非表示に設定しています。
リストビューの操作コマンドを使用せずに、該当列を非表示にすると、上部の登録ボタンも非表示になってしまうため、リストビュー上で非表示にしたい列の上下にボタンなど表示したい領域がある場合に、リストビュー上の列だけ非表示にできる操作になります。

ちなみに、列名にはカッコが使用できません。
列名にカッコを入力すると、自動的にアンダーバーに置き換わります。

◆4.まとめ
以上のように、リストビューの操作コマンドを使用することで、リストビューの更新制御を行うことができました。
リストビューの操作コマンドの行操作を使用して、リストビューにデータを追加、挿入、更新、削除ができますが、データベースにすぐには反映されないことには注意してください。
操作「リストビューの更新確定」を行うことで、データベースが更新されるため、忘れずに行ってください。
