サブフォームをリスト表示にしたときのボタン押イベントで行番号を知りたい
DBに合わせてメニュー作成をしています。(後述)それなりに意図した動きにできています。
そこでUnifinityで用意されている表のクリックイベントの発生物のように何個目のレコード(列番号)なのか判断できる方法はありませんか。
※表セルのクリックイベント発生物(テキスト:セルの中身 名称:表1 個別値1:1 個別値2:2)
現在代替手段としては、ボタン画像のリソースKeyを使っていますが、リソースの再利用を考えるとユニークにしておくことができなくなりそうです。
--------
動的なメニューは次のように画面を用意して対応しています。
A.ボタン用のフォームを用意(テーブル紐付け、ボタンや説明用ラベルへのフォーム:フィールド名の紐付け)
B.メニュー用のサブフォームを用意(明細にAを紐づけ、リスト表示)
-
渡辺様
ご質問いただきありがとうございます。
サブフォームリストに配置したボタンから実行する処理内から、どの行・列のボタンをクリックされたかを判定する場合には以下のような方法がございます。
クリックされたボタンの列を判定したい場合
以下の画像のように処理ロジック内から「イベント発生物>名称」を指定することでどのボタンが押されたかを取得することが可能です。
ボタン名称に列名などを付与することで、どの列がクリックされたかを判定することが可能かと存じます。
クリックされたボタンの行番号を取得したい場合
ボタンの実行処理に紐付けた処理内で「データセット/現在位置取得」を呼び出すことでクリックされたレコードの行番号を取得することが可能です。クリックされたボタンの行のデータを取得したい場合
ボタンの実行処理に紐付けた処理内で「データセット/現在行取得」を呼び出すことでクリックされたレコードの行番号を取得することが可能です。
「データセット/現在行取得」では、サブフォームの明細として設定する画面に紐付けられているコントロールをディクショナリーとして取得することが可能です。例)
●設定内容
表に以下の列が存在
・社員番号
・氏名
・部署画面では以下のみ関連付け
・氏名
・部署●「データセット/現在行取得」の結果
氏名・部署を含むディクショナリーが処理結果となります。 -
回答ありがとうございます。
クリックされたボタンの行番号を取得したい場合
ボタンの実行処理に紐付けた処理内で「データセット/現在位置取得」を呼び出すことでクリックされたレコードの行番号を取得することが可能です。●「データセット/現在行取得」の結果
氏名・部署を含むディクショナリーが処理結果となります。画面に関連付けているものだけが取得できるということは、
基になるDBを検索するために必要となるキーに対応するものは
それ用のコントロールを非表示で作っておく必要があるということでしょうか。 -
渡辺様
ご確認いただきありがとうございます。
処理から取得したいが画面に表示したくない列を「データセット/現在位置取得」で取り扱いたい場合は、ご指摘の通り非表示のコントロールとして画面に配置して頂く必要がございます。
「データセット/現在位置取得」以外の方法であれば、「データベース/SQL実行」や「データベース/取得」から同一レコードの別の列を取得可能です。
(この方法を用いる場合、リスト内にレコードのキーとなるフィールドと紐づくコントロールを取得する必要がございます。)
サインインしてコメントを残してください。
コメント
5件のコメント