Day08-1
概要
WebParts
コントロールでパーソナライズ可能なページを構築しよう!
このレッスンの狙い
- セッティング機能を使用して,マイページを作成する。
- このようなパーソナライズ機能を提供するのが
WebParts
コントロールである。
- このようなパーソナライズ機能を提供するのが
WEbPartsフレームワークの概念
- Webパーツとは,ページ上に配置されたパーツ(レイアウト部品)のレイアウトや表示や日表示をエンドユーザがブラウザ上から自由にカスタマイズできるようにする機能のこと。
ASP.NET3.5で利用可能な主なWebPartsコントロール
分類 | コントロール | 概要 |
---|---|---|
管理 | WebPartsManager | Webパーツを管理するための基本的な機能を提供 |
ゾーン | WebPartsZone | Webパーツ(実コンテンツ)を配置するためのコンテナ |
ゾーン | EditorZone | エディタパーツ(Webパーツ設定用のパーツ)を配置するためのコンテナ |
ゾーン | CatalogZone | カタログパーツ(Webパーツのカタログを表示)を配置するためのコンテナ。 |
パーツ | AppearanceEditParts | Webパーツの見かけを設定するUIを提供 |
パーツ | BehaviorEditParts | Webパーツの挙動を設定するUIを提供 |
パーツ | LayoutEditorParts | Webパーツのレイアウトを設定するUIを提供 |
パーツ | PropertyGridEditorPart | Webパーツ固有のプロパティを設定するUIを提供 |
パーツ | PageCatalogPart | ページ内のWebパーツをカタログ表示 |
パーツ | DeclarativeCatalogPart | 宣言されたWebパーツをカタログ表示 |
パーツ | ImportCatalogPart | インポートされたWebパーツをカタログ表示 |
WebParts
コントロールは,大きく「管理」「ゾーン」「パーツ」に分類することができる。
パーツ
-
ページ上に配置可能なレイアウト部品。
-
パーツの種類
- Webパーツ: 実コンテンツ
- エディタパーツ: Webパーツの挙動をブラウザ上で 設定するためのコンテンツ
- カタログパーツ: 動的にページに追加可能なWebパーツを一覧表示するためのUIを提供するコンテンツ
- Webパーツ: 実コンテンツ
ゾーン
-
パーツを配置するためのコンテナ。
- ゾーンの種類
WebPartsZone
: Webパーツを配置するためのコンテナEditorPartsZone
: エディタパーツを配置するためのコンテナCatalogPartsZone
: カタログパーツを配置するためのコンテナ
- パーツは対応するゾーンに配置しなければエラーになるので注意。
WebPartsZone
に配置されたコントロールは表示されるが,
EditorPartsZone
,CatalogPartsZone
に配置されたコントロールはデフォルトでは表示されない。
管理
WebPartsManager
コントロール- ゾーン/パーツなどの機能を総合的に管理する。
- すべてのゾーン/パーツに先立って配置する必要がある。
WebPartsManager
を利用することで,ゾーン/パーツの表示モードを変更することができる。- プログラム的にゾーン/パーツを操作することも可能になる。
Webパーツを用意しよう
WebPats
コントロールの中核を占めるのは、Webパーツである。- エディタパーツやカタログパーツはあらかじめ
XxxxxEditorPart
/XxxxxCatalogParts
のような出来合いのコントロールが用意されている。 - Webパーツは具体的なコンテンツ部分なので、自前で用意する必要がある。
- ユーザコントロールを定義する方法はDay07-1.mdで説明した通り。
WebPartZone
コントロール内に配置されたコントロールはGenericWebPart
クラスでラッピングされる。GenericWebPart
クラスでラッピングされたコントロールは、Webパーツであるかのように振る舞う
GenericWebPart
コントロールのプロパティ
分類 | プロパティ | 概要 |
---|---|---|
表示 | CatakigIconImageUrl | Webパーツのアイコン画像(カタログパーツで使用) |
表示 | ChromeState | 標準/最小化いずれの状態で表示するか(Normal|Minumum) |
表示 | ChromeType | Webパーツを囲む境界線のスタイル。 None: エクスポートは不可 BorderOnly: 境界線のみ、タイトルバーは非表示 TitleOnly: タイトルバーのみ、境界線は非表示 |
表示 | Description | Webパーツの説明(ツールヒントやカタログパーツで使用) |
表示 | HelpUrl | ヘルプページのURL |
表示 | Subtitle | サブタイトル |
表示 | Title | タイトル |
表示 | TitleIconImageUrl | アイコン画像(タイトルバーに表示) |
表示 | TitleUrl | 補足ページへのURL(タイトルバーからリンク可能) |
挙動 | ExportMode | エクスポートモード None: エクスポートは不可 All: すべてのプロパティをエクスポート可能 NonSensitiveData: 機密事項出ないプロパティのみをエクスポート可能 |
挙動 | HelpMode | ヘルプの表示方法 Modal: モーダルウィンドウとして表示 Modeless: モードレスウィンドウとして表示 Navigate: ページ全体をヘルプで置き換え。 |
コマンド | AllowClose | [終了]操作を許可するか(True|False) |
コマンド | AllowEdit | [編集]操作を許可するか(True|False) |
コマンド | AllowHide | [非表示]操作を許可するか(True|False) |
コマンド | AllowMinimize | [最小化]操作を許可するか(True|False) |
コマンド | AllowZoneChange | ゾーン間の移動を許可するか(True|False) |
その他 | AuthorizationFilter | 認証時に使用する任意の文字列 |
WebPartZone
コントロールの主なプロパティ
-WebPartZone
コントロールは、ゾーン全体の表示方法を管理するためのプロパティを提供している。
分類 | プロパティ | 概要 |
---|---|---|
表示 | AllowLayoutChange | ゾーン内のレイアウトを変更可能か |
表示 | BackImageUrl | 背景画像 |
表示 | BorderColor | 境界線の色 |
表示 | BorderStyle | 境界線のスタイル |
表示 | BorderWidth | 境界線の幅 |
表示 | DragHighlightColor | パーツ移動時に表示されるハイライト色 |
表示 | EmptyZoneText | ゾーンにパーツが含まれない場合に表示されるテキスト |
表示 | HeaderText | ヘッダテキスト |
表示 | MenuLabelText | メニューのラベルテキスト |
表示 | MenuPropupImageUrl | メニューのポップアップ画像 |
表示 | LayoutOrientation | ゾーン内でのパーツの配置方向 (Horizontal|Vertical) |
表示 | PartChromeType | Webパーツにおける境界線の種類 (None|BorderOnly|TitleOnly|TitleAndBorder) |
表示 | ShowTitleIcons | タイトルバーのアイコンを表示するか |
表示 | TitleBarVerbButtonType | タイトルバー上のボタンの種類 (Button|Image|Link) |
表示 | VerbButtonType | コマンドボタンの種類 (Button|Image|Link) |
表示 | WebPartVerbRenderMode | コマンドを表示する場所 (Menu|TitleBar) |
コマンド | CloseVerb | [終了]コマンドの設定 |
コマンド | DeleteVerb | [削除]コマンドの設定 |
コマンド | EditVerb | [編集]コマンドの設定 |
コマンド | ExportVerb | [エクスポート]コマンドの設定 |
コマンド | HelpVerb | [ヘルプ]コマンドの設定 |
コマンド | MinimizeVerb | [最小化]コマンドの設定 |
コマンド | RestoreVerb | [元に戻す]コマンドの設定 |
スタイル | EmptyZoneTextStyle | 空ゾーンの外観(パーツを読み込めない場合など) |
スタイル | ErrorStyle | エラーメッセージに外観 |
スタイル | HeaderStyle | ヘッダの外観 |
スタイル | MenuLabelStyle | メニュー項目の外観 |
スタイル | MenuLabelHoverStyle | メニュー項目のマウスオーバ時の外観 |
スタイル | MenuLabelPopupStyle | メニュー項目のポップアップ時の外観 |
スタイル | MenuStyle | メニューの外観 |
スタイル | MenuHoverStyle | メニューのマウスオーバ時の外観 |
スタイル | MenuPopupStyle | メニューのポップアップ時の外観 |
スタイル | MenuVerbStyle | メニューコマンドの外観 |
スタイル | MenuVerbHoverStyle | メニューコマンドのマウスオーバ時の外観 |
スタイル | MenuVerbPopupStyle | メニューコマンドのポップアップ時の外観 |
スタイル | PartChromeStyle | パーツの境界線の外観 |
スタイル | PartStyle | パーツの外観 |
スタイル | PartTitleStyle | パーツのタイトルバーの外観 |
スタイル | SelectedPartChromeStyle | 選択されたWebパーツの外観 |
スタイル | TitleBarVerbStyle | タイトルバー上のコマンドの外観 |
Webパーツコントロールの表示モード
表示モード | 概要 |
---|---|
参照モード(Browse) | 通常、エンドユーザが利用するモード。 Webパーツの[最小化]や[閉じる]コマンドなど限定された機能だけが利用可能。 エディタ/カタログゾーンは表示されない。 |
デザインモード(Design) | Webパーツのレイアウトを変更するためのモード。 タイトルバー部分をクリックし、そのまま、ドラッグ&ドロップすることで、ゾーン内(間)でWebパーツを移動することが可能。 エディタ/カタログゾーンは表示されない。 |
編集モード(Edit) | 個々のWebパーツから[編集]コマンドを選択することで、対応するエディタゾーンを表示、設定編集を行うことができる。 カタログゾーンは表示されない。 |
カタログモード(Catalog) | ページ内にWebパーツを追加するためのモード。 追加可能なWebパーツを一覧表示するためのカタログゾーンを表示する。 エディタゾーンは表示されない。 |
表示モードをブラウザ上から変更する。
Public Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
For Each mode As WebPartDisplayMode In manager.DisplayModes
If mode.IsEnabled(manager) Then
Dim item As ListItem = New ListItem(mode.Name)
menu.Items.Add(Item)
End If
Next
End SUb
解説
WebPartManager
コントロールのDisplayModes
プロパティは、表示モードの一覧を、
WebPartDisplayModeCollection
オブジェクトとして返す。For Each
命令を利用して、WebPartDisplayMode
オブジェクトを取り出し、DropDownList
コントロールに追加している。WebPartDisplayMode
オブジェクトのIsEnabled
プロパティは、現在のページで該当する表示モードが利用可能であるかを判断する。- 利用可能である場合は、
ListItem
に追加する。
- 利用可能である場合は、
- 作成された
DropDownList
から、選択された値応じて表示モードの切り替えを行う。
Public Sub menu_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Select Case menu.SelectedValue
Case "Browse"
manager.DisplayMode = WebPartManager.BrowseDisplayMode
Case "Catalog"
manager.DisplayMode = WebPartManager.CatalogisplayMode
Case "Design"
manager.DisplayMode = WebPartManager.DesignisplayMode
Case "Edit"
manager.DisplayMode = WebPartManager.EditisplayMode
End Select
End Sub
例外処理を記述する
DisplayMode
プロパティはページ上で使用できないモードを指定された時、ArgumentException
例外を返す。- その例外処理を記述しているのが、以下の個所である。
Try
...中略...
catch ex As ArgumentException
Response.Write("指定された表示モードには対応していません。")
manager.DisplayMode = WebPartManager.BrowseDisplayMode
End Try
まとめ
- Webパーツコントロールは、機能によって下記の三つに分類される。
- 管理: ページの先頭に配置される。
- ゾーン:
- パーツ: 対応するゾーンに配置されてる必要がある。
- 管理: ページの先頭に配置される。
- Webパーツコントロールでは、標準的なサーバコントロールからユーザコントロール、カスタムコントロールまでをWebパーツとして配置することができる。
- 標準的なコントロールがゾーン内に配置された場合、コントロールは
GenericWebPart
クラスでラッピングされる。GenericWebPart
クラスは、Webパーツの基本的な機能をコントロールに追加する。
- ゾーン/パーツの挙動は、表示モード(
WebPartManager.DisplayMode
プロパティ)の値によって異なる。
以上