メインメニュー
ASP.NET 2.0はこちら
ここではASP.NET2.0で新規追加されたMultiViewとViewコントロールの扱い方について説明します。 MSDN2にも説明が載っています。 MultiView Web サーバー コントロールの宣言構文 リンク先の解説を読んで貰えると解ると思いますが、このコントロールは1つのページで上手 く表示を切り替えたい時に非常に役に立ちます。 ユーザーによって印を何か与えてその印の判断によって表示を切り替えたり、View1での入力や動作が 終わった段階でView2へ切り替える等、様々な使い方があります。イメージ的に言うと MultiView がテレビで View がチャンネルといった感じでしょうか。MultiView 自身に 表示させる機能は無いのですが、格納されている View を切り替えるという機能を持っています。 View はそれ自体では表示させる事は出来ませんが、 MultiView に格納する事で表示のみ提供する 事が出来るようになります。 凄く面白い技術ではあるのですが注意点があります。それは ViewState の大きさに注意する と言う点です。 ASP.NET は ViewState を活用してポストバックされた際のデータの照らし 合わせを行うので、View を使いすぎてしまうとそのページ自身の負荷は大きくなります。 実際に使う時にその辺りは注意しましょう! 先ずはどんな動作かですね。 早速ですが、サンプルを作ってみました。下に表示されている3つのボタンを押す事で View1、View2、View3の表示を切り替えるというものです。 つまり今回の場合はユーザーによって表示を切り替えるというイメージに近いかもしれません。 では早速触れてみてください。
動作を見てもらったと思うのでそれぞれの View に変更をを可能にするコードについて説明します。
これはボタン View1 View2 View3 をクリックされた時の物で、今回はポストバック 時に表示する View をセッションに持たせるというパターンにしました。勿論他にも色 々なパターンはあるので必要に応じて変更してくださいね。
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Button1.Click Session("View") = "View1" End Sub Protected Sub Button2_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Button2.Click Session("View") = "View2" End Sub Protected Sub Button3_Click(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Button3.Click Session("View") = "View3" End Sub
続いてポストバック後に View を切り替える為の処理を Page_Load よりも早いイベン トに記述する必要があります。今回は PreRender イベントに記述しました。内容とし ては Select Case 文で振り分けているだけです。 MultiView コントロールの ActiveViewIndex プロパティは0~始まりますのでその点に注意しましょう。
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As _ System.EventArgs) Handles Me.PreRender If IsPostBack Then Select Case Session("View") Case "View1" MultiView1.ActiveViewIndex = 0 Case "View2" MultiView1.ActiveViewIndex = 1 Case "View3" MultiView1.ActiveViewIndex = 2 Case Else MultiView1.ActiveViewIndex = 0 End Select End If End Sub
以上でMultiViewとViewの基本的な使い方は完了です。実際に使う時が来たらそのアプリに合った 使い方に応用して使って見てくださいね。