画面遷移とイベントの発生順
本連載では、各画面をMultiViewコントロール「mtvw」のViewにより実現し、各Viewには、前後のViewへ移動する目的のButtonコントロールを配置しています。
画面の内容 | ViewのID | ViewIndex | 進むボタンのID | 戻るボタンのID |
検索条件設定画面 | vwSearch | 0 | btnSearch | btnBackMenu(*1) |
対象会員選択画面 | vwTarget | 1 | btnDirect | btnBackSearch |
項目選択指示画面 | vwDirect | 2 | btnVerify | btnBackTarget |
選択指示確認画面 | vwVerify | 3 | btnUnify(*2) | btnBackDirect |
名寄せ処理画面を呼び出した元のメニュー画面に戻る。
名寄せ処理を実行した上、vwTargetに戻る。
以降、vwDirect/vwVerifyビュー内の表をそれぞれ「指示表」/「確認表」と呼ぶことにしますが、これらはPreLoadイベント内で用意しないといけません。
用意するタイミングは、それぞれbtnDirect/btnVerifyクリック時ですが、PreLoadイベントはボタンのクリックイベントの前に発生してしまいます。
PreLoadイベントでは、ActiveViewIndexにより移動前のViewは把握できますが、クリックされたButtonを特定できないため、移動後のViewが把握できません。どのViewに移動してもいいように、各Viewでのコントロールは用意しておきます。
また、実際には不要なエラーチェックも行う必要があるため、PreLoad後に発生する「戻る」ボタンのクリックイベントでは、無条件にエラーメッセージをクリアします。
イベントに応じたSession変数の扱い
画面切り替え時に受け渡すデータとして「名寄せ対象会員IDの配列(aryMemberID())」と「動的に生成したTableコントロール(tblUnify)」とがあります。これらは、Session変数(Session("aryMemberID()")とSession("tblUnify"))を使って引き継ぎます。
すべてのボタンクリックに先立って発生するPreLoadイベント内では、上記のSession変数の有無に応じた処理をするため、設定/クリアするタイミングを整理しておきます。
ViewID(Index) | イベント | Session("aryMemberID") | Session("tblUnify") |
vwSearch(0) | Activate | クリアする | クリアする |
vwTarget(1) | PreLoad | 設定する(*3) | なければ設定する(*4) |
vwTarget(1) | Activate | クリアする | クリアする |
vwDirect(2) | PreLoad | ー | なければ設定する(*4) |
vwDirect(2) | btnVerify.Click | ー | 読み込んで処理する |
vwVerify(3) | PreLoad | ー | なければ設定する(*4) |
vwVerify(3) | btnBackDirect.Click | ー | 読み込んで処理する |
vwVerify(3) | btnUnify.Click | ー | 読み込んで処理する |
GridViewを走査し、チェックされた会員IDを配列として設定。
選択された会員IDを基に、会員テーブルから作成して設定。