リストボックス

最終更新日: 2021年6月11日
R8 | R9

実装イメージと定義方法

実装イメージ

2つのモデル「見積書」「商品」を例に説明します。
見積書モデルは商品モデルのデータを参照しています。
見積書データの登録画面は、商品モデルに登録された商品名情報をリストボックス形式で表示し、そのうちの1つを選択する入力仕様です。

モデル「見積書」と「商品」の関係

定義方法

  1. WagbyDesignerで見積書モデルの「商品」項目の型を「他モデルの項目参照」に設定します。
    モデル「見積書」の定義
  2. 「他モデルの項目参照」を選択すると、詳細設定のダイアログが開きます。
    ここで、商品モデルの商品名項目を参照するよう設定します。
    入力タイプは「リストボックス」を選択します。
    商品名項目の詳細定義

ワンポイント

複合キーのモデルの場合

上記の例では単一キーのモデルを用いていますが、下図のように複数の主キーを持つ複合キーモデルの場合でも実装方法は変わりません。

複数の主キーを持つモデル
なお、Wagbyの設計情報の「商品」項目は、物理テーブル定義では二つの列が用意されています。[詳細...]

初期値を設定する

リストボックスの初期値を設定できます。
見積書モデルの新規登録画面を開いた際に、商品名のリストボックスで「キーホルダー」を選択状態にする例で説明します。

実装イメージ

下図のような状態になります。

リストボックスの初期値

定義方法

  1. 初期値として指定したいデータの主キーの値を確認します。
    主キーの値はアプリケーションの詳細表示画面で確認できます。
    主キーの確認
  2. WagbyDesignerで見積書モデルの商品名項目の詳細を開き、「初期値」タブを選択します。
    選択すると、各画面における初期値の設定情報が表示されます。
    登録画面の初期値を指定する場合は、「登録画面表示時」の欄に設定をします。
    初期値設定の詳細はこちらをご覧ください。

    注意

    初期値は画面ごとに設定を行います。全画面共通の設定ではありません。

    初期値設定タブ
  3. 先程アプリケーション上で確認した主キー値を入力し、「OK」をクリックします。
    これで設定は完了です。
    登録画面の初期値を指定

選択肢の表示順を変更する

選択肢モデルの選択肢の表示順変更と同じルールを、通常のモデルにも設定することができます。

実装イメージ

参照するモデルに「表示順序」項目を追加し、その値を利用して表示順序を自由に設定できるようにします。

表示順序の設定

並び順を「表示順序項目の降順」とし、表示順序の数値が大きい順にリストボックス内で並ぶようにします。

選択肢の並び順が変わった

定義方法

  1. WagbyDesignerで選択肢に設定しているモデルに「表示順序」項目を定義します。
    型は必ず「数値」を選択します。
    示順序項目の追加
  2. 選択肢を参照しているモデル項目(ここでは見積書モデルの商品名項目)の型の詳細設定を開きます。
    型の詳細設定は、型の選択欄の右にあるボタンをクリックすると表示されます。
    「オプション」をクリックします。
    「ソートルール」を表示優先度降順とし、「表示優先度項目」には「表示順序」項目を指定します。

    表示順序項目の追加

    ワンポイント

    注意事項

    • 表示優先度項目に指定できるのは、型が数値(整数)型の項目のみです。
    • 表示順序の値が未設定(空白)の場合は 0 と解釈されます。

ソートルールの詳細

表示優先度
下の「表示優先度項目」で指定した項目によってソートされます。
運用中に選択肢の並び順を変更できるようにするには、あらかじめこちらを選択する必要があります。
※②が未設定の場合、「主キー(ID)の昇順」となります。
ID
参照先モデルの主キー値によってソートされます。
内容
参照先モデルの内容によってソートされます。文字列型の場合は辞書順になります。
参照先モデルの固定ソートキー
参照先モデルの一覧表示設定で指定したソートキーの並び順になります。

選択肢を無効にする

選択肢モデルにおける、選択肢の無効化と同じルールを、通常のモデルにも設定することができます。

参照先のデータを物理削除すると、データ間の不整合が生じます。
これを避けるため、データを削除せず無効化することができます。(論理削除)
無効化によってシステム上では非表示となりますが、データは残ります。
無効化を解除して、復活させることもできます。

実装イメージ

商品モデルに「無効化」という項目を用意します。
ここに任意の文字列がセットされていると、そのデータが無効とみなすようにします。
下図では1件のデータに「生産終了」という文字列をセットし、無効化しています。

無効化判定項目の追加

見積書モデルの登録画面には、無効化されたデータは表示されません。

選択肢から「ぬいぐるみ」が消えた

ワンポイント

無効化されたデータの扱いの詳細は選択肢モデルの選択肢の無効化をご覧ください。

定義方法

  1. WagbyDesignerで商品モデルに「無効化」項目を追加します。
    項目名、項目IDは任意です。型を文字列型とします。
    無効化項目の追加
  2. 見積書モデルでは、オプション設定で「無効判定項目」に、「無効化」項目を指定します。
    これで設定は完了です。
    無効化判定項目に「無効化」項目を指定

有効期限項目には、日付形式の文字列(yyyy/MM/dd)を指定して有効期間を設定することができます。[詳細...]

無効な項目も検索対象とする

選択肢モデルにおける「無効な項目も検索対象とする」と同じルールを通常のモデルにも設定することができます。

「未選択」状態を示す選択肢

実装イメージ

リストボックスにはデフォルトで「何も選択していない」状態を示す選択肢「(未選択)」が用意されています。
これは常にリストボックスの先頭に配置されます。
この「(未選択)」は非表示にすることも可能です。

未選択項目が用意されている

登録時の動作

登録画面で「(未選択)」を選択した場合、値は空白で登録されます。

検索時の動作

検索条件として「(未選択)」を指定した場合、その値が空白のデータを検索します。

定義方法

  1. WagbyDesignerでリストボックス形式で他モデルを参照しているモデル項目(ここでは「見積書」モデルの「商品」項目)の詳細定義ダイアログを開きます。
    ダイアログ内の「入力制御」タブをクリックして開きます。
    詳細定義ダイアログ
  2. 少し下にスクロールすると「モデル参照」という見出しの設定欄に「未選択を用意する」という項目があります。
    このチェックを外すと、「(未選択)」が非表示になります。
    未選択項目の設定
  3. チェックを外すと下図のように「(未選択)」が非表示となります。
    未選択項目を用意しないリストボックス

自動計算式でこの項目を参照する場合

未選択項目の有無で、取得できる値が変わります。[詳細...]

「すべて選択」状態を表す選択肢

検索条件のリストボックスにはすべて選択された状態を示す「(すべて)」という選択肢が表示されます。
これは検索条件の入力欄にのみデフォルトで用意されるもので、データの新規登録・更新時の入力欄には用意されません。
この「(すべて)」は非表示にすることも可能です。

検索条件に選択肢「(すべて)」が表示

定義方法

  1. WagbyDesignerでリストボックス形式で他モデルを参照しているモデル項目(ここでは「見積書」モデルの「商品」項目)の詳細定義ダイアログを開きます。
    ダイアログ内の「検索制御」タブをクリックして開きます。
    詳細定義ダイアログ
  2. 少し下にスクロールすると「モデル参照」という見出しの設定欄にリストボックス利用時に「すべて」を用意するという項目があります。
    このチェックを外すと、「(すべて)」が非表示になります。
    リストボックス利用時に「すべて」を用意する
  3. チェックを外すと下図のように、「(すべて)」が非表示となります。
    「すべて」を非表示にした例

検索時の入力タイプを変更する

実装イメージ

検索時の入力タイプを登録・更新時とは別のものに変更することができます。ここでは検索時にラジオボタンを用いる例で説明します。

検索時の入力方式をラジオボタンに変更

定義方法

  1. WagbyDesignerでリストボックス形式で他モデルを参照しているモデル項目(ここでは「見積書」モデルの「商品」項目)の詳細定義ダイアログを開きます。
    ダイアログ内の「検索制御」タブをクリックして開きます。
    詳細定義ダイアログ
  2. 少し下にスクロールすると「モデル参照」という見出しの設定欄に「表示方式の切り替え」という項目があります。
    横のリストボックスで「ラジオボタン」を指定します。
    これで設定は完了です。
    表示方式の切り替え設定

複数の項目を連結して表示する

実装イメージ

複数のモデル項目のデータを連結して表示することができます。
下図は、得意先をリストボックスで選択する例です。
選択肢は「氏名 (氏名カナ)」のように、「氏名」と「氏名カナ」の2つの項目を併せて表示しています。

複数モデル項目を連結表示

定義方法

  1. 参照するモデル側(ここでは顧客モデル)に「氏名 (氏名カナ)」を格納する項目を追加します。
    モデル定義
  2. この項目の値は、Wagbyの自動計算式を利用し、他項目(氏名と氏名カナ)を参照して表示します。 「氏名(氏名カナ)」という表示にするため、以下の式を適用します。
    また、他の項目の値を利用するため、「値をデータベースに保存する」のチェックは外します。
    ${customername}+"("+${customerkana}+")"
    式の設定
  3. この項目は、他モデル(ここでは見積書モデル)より参照する以外の用途はありません。
    モデルの各種メニュー(登録・更新など)では入力不可とするため、隠し項目に設定します。
    「入力制御」タブをクリックして開き、「隠し項目」欄の「全画面」にチェックを入れます。
    隠し項目の設定(入力制御)
  4. 続いて、「出力制御」タブをクリックして開きます。
    入力欄と同様、データ出力時にも非表示とします。
    「共通」欄の「隠し項目にする」にチェックを入れます。
    隠し項目の設定(出力制御)
  5. 参照する側となるモデル項目(ここでは見積書モデルの得意先項目)では、下図の通り参照先モデル項目を指定します。
    参照先モデル項目の設定

必須項目に指定する

必須項目に指定すると、リアルタイムで入力チェックが入ります。
必須項目の指定方法はこちらをご覧ください。

必須項目の入力チェック

参照先モデルのデータが削除されていた場合

参照先のデータが削除されていた場合、詳細表示画面には「存在しないデータ」と表示されます。
横の数字は削除されたデータの主キー値で、(-)は無効データであることを示す記号です。

参照先モデル項目の設定

文言を変更する

この「存在しないデータ」という文言は変更することができます。
変更方法はこちらをご覧ください。

データベース内部の詳細

参照する側のモデル(ここでは見積書モデル)の項目は、参照先モデルの主キーの値を保持します。

データベース上のテーブルを確認すると、ID値が格納されていることがわかります。

また、「(未選択)」でデータを登録した場合、データベースには NULL で保存されます。

複合キーのモデルを参照する

主キーが複合キー形式の場合でも、同様の手順で設定可能です。

商品モデル(主キーが複合キー形式)

仕様・制約

  • リストボックスの選択肢の数に、理論上の上限はありません。
    ただし数が多いと表示に時間がかかることから、このような場合は検索画面の利用を検討してください。
  • 他モデルの参照項目の参照先が、他モデルの参照項目となっている定義は動作しません。
    例えば次のようなケースについて、
    他モデルの参照(リストボックス) > 他モデルの参照(リストボックス) > 通常項目
    他モデルの参照項目の参照先に、他モデルの参照項目を指定することはできません。

    ※ Wagbyでは、モデル参照は「ID部」を管理しています。そのため上の定義だと、リストボックスに表示される選択肢に内容部ではなくID部が表示されてしまいます。これは利用者の意図とは異なる動作です。
    ※ 上記の例ではリストボックス > リストボックスの組み合わせでしたが、リストボックスのみならずラジオボタン、チェックボックス、検索画面いずれの組み合わせも同様に、動作しません。

関連するページ