SDTGridにコンボボックスを2つ置き、1つ選択でもう一つのコンボボックスの内容を変える方法

タイトルだけ読むと何のことがさっぱり分からないですね。。。

今回やりたいことをざっくり説明すると、下記のような感じです。

一覧画面でカテゴリを選ぶと同一行の商品はそのカテゴリに属する商品のみ選択できるようにします。
※一覧はSDTのGridです

ダイナミックコンボ2つ置いて、商品のダイナミックコンボのプロパティにあるConditionにCurrentItemのカテゴリを書けば行けると思ったのですが、行けなかったので出来た方法を備忘録として残しておきます。

トランザクション作成

カテゴリマスタ

商品マスタ

商品マスタにカテゴリIDを持つことによって、どのカテゴリに属する商品なのかを決めています。

SDT作成

商品発注SDT

名前は何でも良いですが、今回は商品発注SDTと言う名前にしました。

画面作成

今回画面レイアウトはWorkWithPlusを使って作りますが、実装はEvent内に記載しますので、WWPを使わない場合も同様に実装可能です。

WWPのインスタンス

カテゴリIDはダイナミックコンボボックスとしてマスタから取ってくるようにしてます。

商品IDは普通のコンボボックスにして値はEventでセットします。

StartEvent

SDTに5行空行をセットします。

カテゴリIDのフォーカスアウトEvent

カテゴリを選択した時に動的に選択できる商品を変更するため、カテゴリIDのControlValueChangedイベントでGridのRefreshをします。
※コントロール名とGrid名は変更してください。

GridのLoadイベント

選択したカテゴリによって選べる商品をコンボボックスにセットします。
※25行目は空行をセットするために記載してます。

これで実装完了です。

動作確認

まずはマスタデータを用意します。

カテゴリマスタ

商品マスタ

では実際に作成した画面の動作を確認してみましょう。

初期画面

カテゴリを選択した状態

1行目のカテゴリで「お菓子」を選択。

2行目のカテゴリで「飲料」を選択。

想定通りの結果になってますね。

まとめ

今回の内容はこんなことできますか?と言う質問を受けて、簡単にできますよって回答したのですが、ちょっとテクニックが必要だったため記載しました。

カテゴリのControlValueChangedイベントでGridのRefreshをしたら、Gridは初期状態に戻ってしまうかなと思ったのですが、SDTGridだと希望の動作をしてくれたので良かったです。

もしかしたらもうちょっと簡単でスマートな方法があるのかもしれませんが、思いつきませんでした。
もしもっと良い方法があるよって方いましたら連絡ください。

Blog一覧へ