ITrackingPersonalizableとは? わかりやすく解説

ITrackingPersonalizable インターフェイス

メモ : このインターフェイスは、.NET Framework version 2.0新しく追加されたものです。

Web パーツ コントロールで、パーソナル化読み込みプロセス保存プロセス特定のフェーズ追跡できるようにします。

名前空間: System.Web.UI.WebControls.WebParts
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Interface ITrackingPersonalizable
Dim instance As ITrackingPersonalizable
public interface ITrackingPersonalizable
public interface class ITrackingPersonalizable
public interface ITrackingPersonalizable
public interface ITrackingPersonalizable
解説解説
使用例使用例

ITrackingPersonalizableメソッドプロパティ使用してパーソナル化情報読み込みおよび保存追跡するコード例次に示します。このコード例は、.aspx ページと App_Code サブディレクトリ格納されるファイル2 つ部分構成されます。

ユーザーURL 情報入力し、この URL 情報保存できるようにする Web パーツ コントロール作成するコード例次に示します



Imports System
Imports System.Collections
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Drawing
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts


Namespace PersTest
    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


        Public Overrides ReadOnly
 Property Subtitle() As String
            Get
                Return [Text]
            End Get
        End Property


        <Personalizable(), WebBrowsable()> _
        Public Overridable Property
 [Text]() As String
            Get
                Dim o As Object
 = ViewState("Text")
                If o Is Nothing
 Then
                    Return "My Links"
                Else
                    Return CType(o, String)
                End If

            End Get
            Set(ByVal value As
 String)
                ViewState("Text") = value
            End Set
        End Property


        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
            '       Return False

        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 'Save


    Public Class UrlListExWebPart
        Inherits UrlListWebPart
        Implements ITrackingPersonalizable

        Private _trackingLog As String
 = String.Empty
        Private _loading As Boolean
        Private _saving As Boolean


        Public Overrides Property
 [Text]() As String
            Get
                Return MyBase.Text
            End Get
            Set(ByVal value As
 String)
                If MyBase.Text.Equals(value)
 = False Then
                    MyBase.Text = value
                    SetPersonalizationDirty()
                End If
            End Set
        End Property

        Protected Overrides Sub
 OnUrlAdded()
            MyBase.OnUrlAdded()
            SetPersonalizationDirty()

        End Sub 'OnUrlAdded

        Protected Overrides Sub
 RenderContents(ByVal writer As HtmlTextWriter)
            MyBase.RenderContents(writer)

            writer.Write("<br />")
            writer.Write("<pre id="""
 + ClientID + "$log" + """>")
            writer.Write(_trackingLog)
            writer.Write("</pre>")

        End Sub 'RenderContents


        Public Overrides Sub
 Load(ByVal state As PersonalizationDictionary)
            If _loading = False Then
                Throw New InvalidOperationException()
            End If
            MyBase.Load(state)

        End Sub 'Load


        Public Overrides Sub
 Save(ByVal state As PersonalizationDictionary)
            If _saving = False Then
                Throw New InvalidOperationException()
            End If
            MyBase.Save(state)

        End Sub 'Save

        ReadOnly Property TracksChanges() As
 Boolean Implements ITrackingPersonalizable.TracksChanges
            Get
                Return True
            End Get
        End Property

        Sub BeginLoad() Implements ITrackingPersonalizable.BeginLoad
            _loading = True
            _trackingLog = "1. BeginLoad" + vbCr +
 vbLf

        End Sub 'ITrackingPersonalizable.BeginLoad

        Sub BeginSave() Implements ITrackingPersonalizable.BeginSave
            _saving = True
            _trackingLog += "3. BeginSave" + vbCr
 + vbLf

        End Sub 'ITrackingPersonalizable.BeginSave

        Sub EndLoad() Implements ITrackingPersonalizable.EndLoad
            _loading = False
            _trackingLog += "2. EndLoad" + vbCr +
 vbLf

        End Sub 'ITrackingPersonalizable.EndLoad

        Sub EndSave() Implements ITrackingPersonalizable.EndSave
            _saving = False
            _trackingLog += "4. EndSave"

        End Sub 'ITrackingPersonalizable.EndSave
namespace PersTest
{

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Drawing;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;

    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;

        public override string Subtitle
        {
            get
            {
                return Text;
            }
        }

        [Personalizable, WebBrowsable]
        public virtual string Text
        {
            get
            {
                object o = ViewState["Text"];
                return (o != null) ? (String)o
 : "My Links";
            }
            set
            {
                ViewState["Text"] = value;
            }
        }

        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);
            }
        }
    }

    public class UrlListExWebPart : UrlListWebPart,
 ITrackingPersonalizable
    {

        private string _trackingLog = String.Empty;
        private bool _loading;
        private bool _saving;

        public override string Text
        {
            get
            {
                return base.Text;
            }
            set
            {
                if (base.Text.Equals(value)
 == false)
                {
                    base.Text = value;
                    SetPersonalizationDirty();
                }
            }
        }
        protected override void OnUrlAdded()
        {
            base.OnUrlAdded();
            SetPersonalizationDirty();
        }
        protected override void RenderContents(HtmlTextWriter
 writer)
        {
            base.RenderContents(writer);

            writer.Write("<br />");
            writer.Write("<pre id=\"" + ClientID + "$log"
 + "\">");
            writer.Write(_trackingLog);
            writer.Write("</pre>");
        }

        public override void Load(PersonalizationDictionary
 state)
        {
            if (_loading == false)
            {
                throw new InvalidOperationException();
            }
        }

        public override void Save(PersonalizationDictionary
 state)
        {
            if (_saving == false)
            {
                throw new InvalidOperationException();
            }
            base.Save(state);
        }
        bool ITrackingPersonalizable.TracksChanges
        {
            get
            {
                return true;
            }
        }
        void ITrackingPersonalizable.BeginLoad()
        {
            _loading = true;
            _trackingLog = "1. BeginLoad\r\n";
        }
        void ITrackingPersonalizable.BeginSave()
        {
            _saving = true;
            _trackingLog += "3. BeginSave\r\n";
        }
        void ITrackingPersonalizable.EndLoad()
        {
            _loading = false;
            _trackingLog += "2. EndLoad\r\n";
        }
        void ITrackingPersonalizable.EndSave()
        {
            _saving = false;
            _trackingLog += "4. EndSave";
        }
    }
}

Web パーツ ゾーン作成し、そのゾーンコントロール追加する .aspx ページ次に示します。このページでは、パーソナル化適用されるように個別ユーザーログオンするために使用する必要があるログイン コントロール参照します。

<%@ Page Language="VB" %>
<%@ Register TagPrefix="dict" namespace=PersTest
 %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat=server></asp:WebPartManager>
    &nbsp;<asp:LoginName ID="LoginName1" runat="server"
 />
        &nbsp;
        <asp:LoginStatus ID="LoginStatus1" runat="server"
 LogoutAction="RedirectToLoginPage" />
        &nbsp;&nbsp;&nbsp;&nbsp;<br />
    <div>
    <asp:WebPartZone ID="WebPartZone1" runat="server">
                 <ZoneTemplate>
        <dict:UrlListWebPart id=PersDict title="Personalization
 Dictionary" runat=server />
       
        </ZoneTemplate>
        </asp:WebPartZone>
    </div>
    </form>
</body>
</html>
<%@ Page Language="C#"  %>
<%@ Register TagPrefix="dict" namespace=PersTest
 %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html  >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:WebPartManager ID="WebPartManager1" runat=server></asp:WebPartManager>
    &nbsp;<asp:LoginName ID="LoginName1" runat="server"
 />
        &nbsp;
        <asp:LoginStatus ID="LoginStatus1" runat="server"
 LogoutAction="RedirectToLoginPage" />
        &nbsp;&nbsp;&nbsp;&nbsp;<br />
    <div>
    <asp:WebPartZone ID="WebPartZone1" runat="server">
                 <ZoneTemplate>
        <dict:UrlListWebPart id=PersDict title="Personalization Dictionary"
 runat=server />
       
        </ZoneTemplate>
        </asp:WebPartZone>
    </div>
    </form>
</body>
</html>
.NET Framework のセキュリティ.NET Frameworkセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ITrackingPersonalizable プロパティ


ITrackingPersonalizable メソッド


ITrackingPersonalizable メンバ




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ITrackingPersonalizable」の関連用語

ITrackingPersonalizableのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ITrackingPersonalizableのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS