行のデータによってドロップダウンデータウィンドウのフィルター条件を変更する
2021/03/15
方法
ドロップダウンデータウィンドウ (DDDW) は GetChild 関数によって参照を取得でき、取得した DDDW に対して SetFilter、Filter 関数を呼び出すことで DDDW 内のデータにフィルターをかけることが可能です。
行ごとに異なるフィルター条件を適用するためには、DDDW カラムにフォーカスが移動した際に現在行のデータを取得し、その値によって条件を変更します。
フォーカスの移動は ItemFocusChanged イベントで検出します。
【例】DDDW カラム (sub_category) のリストを他のカラム (category) の値で絞り込む
[データウィンドウの ItemFocusChanged イベント]
string ls_category string ls_filter datawindowchild ldwc_subcat // DDDW カラム (sub_category) にフォーカスが移動したとき // リストの内容を category で絞り込む IF dwo.name = "sub_category" THEN // DDDW を取得 this.GetChild("sub_category", ldwc_subcat) // 他のカラムの値からフィルター式を生成 ls_category = this.GetItemString(GetRow(), "category") IF IsNull(ls_category) or ls_category = "" THEN // 値が未入力の場合はフィルターを解除 ls_filter = "" ELSE ls_filter = "category='" + String(ls_category) +"'" END IF // フィルターを設定 ldwc_subcat.SetFilter(ls_filter) ldwc_subcat.Filter() // DDDW をソート (ソート条件はデータウィンドウで設定済み) ldwc_subcat.Sort() END IF
Tips情報
プロダクト :PowerBuilder
バージョン :2017R3