Day04-2
Column: ASP.NETのトレース機能
-
ASP.NETでは標準の実行トレース機能を提供している。=> トレース機能
-
下記の記述を追記して、トレース機能を有効にする。
<%@ Page Trace=”True” %>
-
上記を記入するとページの末尾にトレース情報が表示される。
| セクション | 概要 |
|---|---|
| 要求の詳細 | 要求時間や文字のエンコーディング、HTTPステータスなどの全般的な情報 |
| トレースの情報 | 各メソッドの実行順や処理時間など |
| コントロールのツリー | ページ上のすべてのサーバコントロールを階層式に出力 |
| session情報 | session変数の一覧 |
| アプリケーション状態 | アプリケーション変数の一覧 |
| クッキーコレクション | クライアントから送信されたクッキーの値とサイズ |
| ヘッダコレクション | リクエスト時に送信されたHTTPヘッダに関する情報 |
| フォームコレクション | フォームデータとして送信された情報 |
| QueryStringコレクション | クエリ情報として送信された情報 |
| サーバ変数 | 利用可能なサーバ変数の情報 |
目的
Wizardコントロールでウィザード形式の画面を作成する。
このレッスンの狙い
Wizard形式の画面構成の大変さ
- Webアプリケーションにおいてウィザード形式のページを作成するのは大変だ
- 情報を維持する必要がある。
- 途中のステップにユーザがアクセスしたときにプログラムが壊れる恐れがある。
ASP.NETのWizardコントロールを使用すれば
- 簡単にウィザード形式のページを作成することができる
Wizardコントロールの使い方を学びましょう!
WizardコントロールとMultiView/Viewコントロールの使い分け
-
複数の
Viewを管理するという意味で、上記二つはよく似たコントロールである -
これらを使い分けるには下記のようなポイントがある
- ビューが順番を持つか
- 順番を持つ: Wizardコントロール
- 順番を持たない: MultiView/Viewコントロール
- 参照系の画面か、入力系の画面か
- 入力系の画面: Wizardコントロール
- 参照系の画面: MultiView/Viewコントロール
- フォームの外観を統一したいか
- 統一したい: Wizardコントロール
- 統一しなくていい: MultiView/Viewコントロール
- ビューが順番を持つか
ウィザードステップの設定
- Wizardコントロールではウィザード配下の各ステップを
WizardStepオブジェクトで管理する。- Wizardオブジェクトの編集はWizardStepコレクションエディタダイアログから行うことができる。
WizardStepクラスの主なプロパティ
| プロパティ | 概要 |
|---|---|
| AllowReturn | 後続のステップから現在のステップに戻ることを許可するか |
| StepType | ステップの種類 |
| Title | ステップのタイトル(サイドバーに表示) |
StepTypeについて
StepTypeに関する設定値とその概要は下記の通り
| 設定値 | 概要 |
|---|---|
| Auto | ステップの順番に応じて自動で判別 |
| Start | 開始ステップ(「次へ」ボタンのみ表示) |
| Step | 標準のステップ(「次へ」「戻る」ボタンを表示) |
| Finish | 入力終了ステップ(「完了」ボタンを表示) |
| Complete | 「完了」後に入力内容や成功メッセージを表示するために使用する完了ステップ |
Wizardコントロールで利用可能なイベント
Wizardコントロールで利用可能な主なイベント
| イベント | 概要 |
|---|---|
| ActiveStepChanged | ステップを移動したタイミングで発生 |
| CancelButtonClick | [キャンセル]ボタンのクリック時 |
| CancelButtonClick | [完了]ボタンのクリック時 |
| NextButtonClick | [次へ]ボタンのクリック時 |
| PreviousButtonClick | [戻る]ボタンのクリック時 |
| SideBarButtonClick | サイドバー領域のボタンのクリック時 |
使用例
Protected Sub wz_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs)
sds.Insert()
End Sub
SqlDataSourceコントロールに動的にパラメータを渡す
- SqlDataSourceコントロールに対してパラメータを引き渡す方法
- データソース構成ウィザードからもととなるデータソースとキー名を設定しておく。(一時限目参照)
- パラメータだけを定義して起き、具体的な値はアプリケーションから引き渡す。
- データソース構成ウィザードからもととなるデータソースとキー名を設定しておく。(一時限目参照)
パラメータから値を引き渡す
SqlDataSourceコントロールの下記のイベントを使用する。InsertingイベントUpdatingイベントDeletingイベント
- 上記のイベントは、各処理を実行する[直前]に発生するイベントで、 これらのイベントに対応するイベントハンドラを利用することで、パラメータの動的な引き渡しを行うことができる。
SqlDataSourceコントロールで利用可能なイベントは以下の通り
| イベント | 概要 |
|---|---|
| Deleted | 削除処理の完了後 |
| Deleting | 削除処理を行う直前 |
| Filtering | フィルタ操作の直前 |
| Inserted | 挿入処理の完了後 |
| Inserting | 挿入処理の直前 |
| Selected | データ取得処理の完了後 |
| Selecting | データ取得処理の直前 |
| Updated | 更新処理の完了後 |
| Updating | 更新処理の直前 |
```vb.net: 使用例
Protected Sub sds_Inserting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceCommandEventArgs) e.Command.Parameters(“@name”).Value = txtName.Text e.Command.Parameters(“@email”).Value = txtEmail.Text …中略… e.Command.Parameters(“@mail”).Value = chkMail.Text End Sub
```
解説
Insertingイベントハンドラでは、
第二引数として受け取ったSqlDataSourceCommandEventArgsオブジェクトのCommandプロパティを参照することで
SqlDataSourceコントロールで定義されたINSERT命令を取得できるので、
さらに、そのParametersプロパティでパラメータのコレクションにアクセスする。
e.Command.Parameters("パラメータ名").Value
Wizardkコントロールのその他プロパティ
挙動
| プロパティ | 概要 |
|---|---|
| CancdlDestinationPageUrl | [キャンセル]時の移動URL |
| FinishDestinationPageUrl | [完了]時の移動先URL |
表示
| プロパティ | 概要 |
|---|---|
| DisplayCancelButton | [キャンセル]ボタンを表示するか |
| DisplaySideBar | サイドバーを表示するか |
| HeaderText | ヘッダテキスト |
情報
| プロパティ | 概要 |
|---|---|
| ActiveStep | 現在、表示されているステップ(WizardStepオブジェクト) |
| ActiveStepIndex | 現在、表示されているステップ(インデックス) |
ボタン
| プロパティ | 概要 |
|---|---|
| CancelButtonImageUrl | [キャンセル]ボタンのイメージ画像 |
| CancelButtonText | [キャンセル]ボタンのキャプション |
| CancelButtonType | [キャンセル]ボタンの種類 |
| FinishCompleteButtonImageUrl | [完了]ボタンのイメージ画像 |
| FinishCompleteButtonText | [完了]ボタンのキャプション |
| FinishCompleteButtonType | [完了]ボタンの種類 |
| FinishPreviousButtonImageUrl | 完了ステップの[戻る]ボタンのイメージ画像 |
| FinishPreviousButtonText | 完了ステップの[戻る]ボタンのキャプション |
| FinishPreviousButtonType | 完了ステップの[戻る]ボタンの種類 |
| StartNextButtonImageUrl | 開始ステップの[次へ]ボタンのイメージ画像 |
| StartNextButtonText | 開始ステップの[次へ]ボタンのキャプション |
| StartNextButtonType | 開始ステップの[次へ]ボタンの種類 |
| StepNextButtonImageUrl | [次へ]ボタンのイメージ画像 |
| StepNextButtonText | [次へ]ボタンのキャプション |
| StepNextButtonType | [次へ]ボタンの種類 |
| StepPreviousButtonImageUrl | [戻る]ボタンのイメージ画像 |
| StepPreviousButtonText | [戻る]ボタンのキャプション |
| StepPreviousButtonType | [戻る]ボタンの種類 |
スタイル
| プロパティ | 概要 |
|---|---|
| CancelButtonStyle | [キャンセル]ボタンの外観 |
| FinishCompleteButtonStyle | [完了]ボタンの外観 |
| FinishPreviousButtonStyle | 完了ステップの[戻る]ボタンの外観 |
| HeaderStyle | ヘッダ部の外観 |
| NavigationButtonStyle | ナビゲーションボタンの外観 |
| NavigationStyle | ナビゲーション領域の外観 |
| SideBarButtonStyle | サイドバーボタンの外観 |
| SideBarStyle | サイドバーの外観 |
| StartNextButtonStyle | 開始ステップの[次へ]ボタンの外観 |
| StepNextButtonStyle | [次へ]ボタンの外観 |
| StepPreviousNextButtonStyle | [戻る]ボタンの外観 |
| StepStyle | ステップの外観 |
まとめ
- WizardコントロールとMultiView/Viewコントロールとの使い分けの基準には下記の点がある。
- ビューが順番を持つか?
- 参照/入力いずれの目的か?
- 外観を統一したいか?
- ウィザードステップは[WizardStepコレクションエディタ]で編集が可能である。
- WizardStepクラスの
StepTypeプロパティでステップの種類を明示的に定義できる。
- WizardStepクラスの
- Wizardコントロールには、
FinishButtonClickイベントをはじめとする各種イベントが用意されている。- これらのイベントを利用することで、ウィザード機能に独自の処理を組み込むことが可能。
- SqlDataSourceコントロールでは、
Xxxxxing/Xxxxxedイベントが用意されている。- これらのイベントを利用することで、コマンド実行前のパラメータの引き渡し、実行結果の取得、後始末などの処理を定義することができる。
以上