IPersonalizable.Load メソッド
アセンブリ: System.Web (system.web.dll 内)


このメソッドは、そのコントロール自体にカスタム データを読み込むことができるコントロールで呼び出されます。ページ上の他のパーソナル化データが変更されたかどうかに関係なく、コントロールのカスタム状態を基になるデータ ストアに書き戻す必要があるかどうかを示す値を返すこともできます。コントロールでは、独自のカスタム プロパティを設定し、パーソナル化ディクショナリに格納されている値に基づいて追加の内部ロジックを実行できます。このメソッドは、パーソナル化データをコントロールに適用するときに、Web パーツ コントロール セットによって呼び出されます。
PersonalizationDictionary オブジェクトに格納されているスコープが User のプロパティとスコープが Shared のプロパティのマージ動作にも注意してください。state パラメータには、基になるデータ ストアから読み込まれたカスタム データが、マージされた状態で格納されます。Shared スコープでは、ページ自体が Shared スコープに含まれていたときに追加されたすべての値を使用できます。User スコープでは、User パーソナル化スコープに関連付けられた値に、ページが Shared スコープに含まれていたときに追加された値と、ページが User スコープに含まれていたときの別の値が含まれる場合、パーソナル化インフラストラクチャは (Shared スコープの値ではなく) スコープが User の値だけを state パラメータに含めます。

カスタム WebPart コントロールでの Load メソッドの実装を次のコード例に示します。この例の実行に必要なコード全体については、IPersonalizable クラスの概要で「例」を参照してください。
Imports System Imports System.Collections Imports System.ComponentModel Imports System.Diagnostics Imports System.Drawing Imports System.Web Imports System.Web.UI Imports System.Security.Permissions Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Namespace Samples.AspNet.VB.Controls <AspNetHostingPermission(SecurityAction.Demand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ <AspNetHostingPermission(SecurityAction.InheritanceDemand, _ Level:=AspNetHostingPermissionLevel.Minimal)> _ Public Class UrlListWebPart Inherits WebPart Implements IPersonalizable Private _sharedUrls As ArrayList Private _userUrls As ArrayList Private _listDirty As Boolean Private _nameTextBox As TextBox Private _urlTextBox As TextBox Private _addButton As Button Private _list As BulletedList Protected Overrides Sub CreateChildControls() Dim nameLabel As New Label() Dim urlLabel As New Label() Dim breakLiteral1 As New LiteralControl("<br />") Dim breakLiteral2 As New LiteralControl("<br />") Dim breakLiteral3 As New LiteralControl("<br />") _nameTextBox = New TextBox() _urlTextBox = New TextBox() _addButton = New Button() _list = New BulletedList() nameLabel.Text = "Name: " urlLabel.Text = "URL: " _nameTextBox.ID = "nameTextBox" _urlTextBox.ID = "urlTextBox" _addButton.Text = "Add" _addButton.ID = "addButton" AddHandler _addButton.Click, AddressOf Me.OnClickAddButton _list.DisplayMode = BulletedListDisplayMode.HyperLink _list.ID = "list" Controls.Add(nameLabel) Controls.Add(_nameTextBox) Controls.Add(breakLiteral1) Controls.Add(urlLabel) Controls.Add(_urlTextBox) Controls.Add(breakLiteral2) Controls.Add(_addButton) Controls.Add(breakLiteral3) Controls.Add(_list) End Sub 'CreateChildControls Private Sub OnClickAddButton(ByVal sender As Object, ByVal e As EventArgs) Dim name As String = _nameTextBox.Text.Trim() Dim url As String = _urlTextBox.Text.Trim() Dim p As New Pair(name, url) If WebPartManager.Personalization.Scope = PersonalizationScope.Shared Then If _sharedUrls Is Nothing Then _sharedUrls = New ArrayList() End If _sharedUrls.Add(p) Else If _userUrls Is Nothing Then _userUrls = New ArrayList() End If _userUrls.Add(p) End If OnUrlAdded() End Sub 'OnClickAddButton Protected Overridable Sub OnUrlAdded() _listDirty = True ChildControlsCreated = False End Sub 'OnUrlAdded Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter) If Not (_sharedUrls Is Nothing) Then Dim p As Pair For Each p In _sharedUrls _list.Items.Add(New ListItem(CStr(p.First), CStr(p.Second))) Next p End If If Not (_userUrls Is Nothing) Then Dim p As Pair For Each p In _userUrls _list.Items.Add(New ListItem(CStr(p.First), CStr(p.Second))) Next p End If MyBase.RenderContents(writer) End Sub 'RenderContents Public Overridable ReadOnly Property IsDirty() As Boolean _ Implements IPersonalizable.IsDirty Get Return _listDirty End Get End Property Public Overridable Shadows Sub Load(ByVal state As PersonalizationDictionary) _ Implements IPersonalizable.Load If Not (state Is Nothing) Then Dim sharedUrlsEntry As PersonalizationEntry = state("sharedUrls") If Not (sharedUrlsEntry Is Nothing) Then _sharedUrls = CType(sharedUrlsEntry.Value, ArrayList) End If Dim userUrlsEntry As PersonalizationEntry = state("userUrls") If Not (userUrlsEntry Is Nothing) Then _userUrls = CType(userUrlsEntry.Value, ArrayList) End If End If End Sub 'Load Public Overridable Sub Save(ByVal state As PersonalizationDictionary) _ Implements IPersonalizable.Save If Not (_sharedUrls Is Nothing) AndAlso _sharedUrls.Count <> 0 Then state("sharedUrls") = New PersonalizationEntry(_sharedUrls, PersonalizationScope.Shared) End If If Not (_userUrls Is Nothing) AndAlso _userUrls.Count <> 0 Then state("userUrls") = New PersonalizationEntry(_userUrls, PersonalizationScope.User) End If End Sub End Class End Namespace
namespace Samples.AspNet.CS.Controls { using System; using System.Collections; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.Web; using System.Web.UI; using System.Security.Permissions; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)] [AspNetHostingPermission(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.Minimal)] public class UrlListWebPart : WebPart, IPersonalizable { private ArrayList _sharedUrls; private ArrayList _userUrls; private bool _listDirty; private TextBox _nameTextBox; private TextBox _urlTextBox; private Button _addButton; private BulletedList _list; protected override void CreateChildControls() { Label nameLabel = new Label(); Label urlLabel = new Label(); LiteralControl breakLiteral1 = new LiteralControl("<br />"); LiteralControl breakLiteral2 = new LiteralControl("<br />"); LiteralControl breakLiteral3 = new LiteralControl("<br />"); _nameTextBox = new TextBox(); _urlTextBox = new TextBox(); _addButton = new Button(); _list = new BulletedList(); nameLabel.Text = "Name: "; urlLabel.Text = "URL: "; _nameTextBox.ID = "nameTextBox"; _urlTextBox.ID = "urlTextBox"; _addButton.Text = "Add"; _addButton.ID = "addButton"; _addButton.Click += new EventHandler(this.OnClickAddButton); _list.DisplayMode = BulletedListDisplayMode.HyperLink; _list.ID = "list"; Controls.Add(nameLabel); Controls.Add(_nameTextBox); Controls.Add(breakLiteral1); Controls.Add(urlLabel); Controls.Add(_urlTextBox); Controls.Add(breakLiteral2); Controls.Add(_addButton); Controls.Add(breakLiteral3); Controls.Add(_list); } private void OnClickAddButton(object sender, EventArgs e) { string name = _nameTextBox.Text.Trim(); string url = _urlTextBox.Text.Trim(); Pair p = new Pair(name, url); if (WebPartManager.Personalization.Scope == PersonalizationScope.Shared) { if (_sharedUrls == null) { _sharedUrls = new ArrayList(); } _sharedUrls.Add(p); } else { if (_userUrls == null) { _userUrls = new ArrayList(); } _userUrls.Add(p); } OnUrlAdded(); } protected virtual void OnUrlAdded() { _listDirty = true; ChildControlsCreated = false; } protected override void RenderContents(HtmlTextWriter writer) { if (_sharedUrls != null) { foreach (Pair p in _sharedUrls) { _list.Items.Add(new ListItem((string)p.First, (string)p.Second)); } } if (_userUrls != null) { foreach (Pair p in _userUrls) { _list.Items.Add(new ListItem((string)p.First, (string)p.Second)); } } base.RenderContents(writer); } public virtual bool IsDirty { get { return _listDirty; } } public new virtual void Load(PersonalizationDictionary state) { if (state != null) { PersonalizationEntry sharedUrlsEntry = state["sharedUrls"]; if (sharedUrlsEntry != null) { _sharedUrls = (ArrayList)sharedUrlsEntry.Value; } PersonalizationEntry userUrlsEntry = state["userUrls"]; if (userUrlsEntry != null) { _userUrls = (ArrayList)userUrlsEntry.Value; } } } public virtual void Save(PersonalizationDictionary state) { if ((_sharedUrls != null) && (_sharedUrls.Count != 0)) { state["sharedUrls"] = new PersonalizationEntry(_sharedUrls, PersonalizationScope.Shared); } if ((_userUrls != null) && (_userUrls.Count != 0)) { state["userUrls"] = new PersonalizationEntry(_userUrls, PersonalizationScope.User); } } } }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- IPersonalizable.Load メソッドのページへのリンク