IPersonalizable.Load(PersonalizationDictionary) IPersonalizable.Load(PersonalizationDictionary) IPersonalizable.Load(PersonalizationDictionary) IPersonalizable.Load(PersonalizationDictionary) Method

Definition

Lädt benutzerdefinierte Daten in ein Steuerelement.Loads custom data into a control.

public:
 void Load(System::Web::UI::WebControls::WebParts::PersonalizationDictionary ^ state);
public void Load (System.Web.UI.WebControls.WebParts.PersonalizationDictionary state);
abstract member Load : System.Web.UI.WebControls.WebParts.PersonalizationDictionary -> unit
Public Sub Load (state As PersonalizationDictionary)

Parameter

state
PersonalizationDictionary PersonalizationDictionary PersonalizationDictionary PersonalizationDictionary

Ein PersonalizationDictionary, das benutzerdefinierte Daten zum Gültigkeitsbereich enthält, die aus dem zugrunde liegenden Datenspeicher geladen wurden.A PersonalizationDictionary that contains custom scoped data that was loaded from the underlying data store.

Beispiele

Im folgenden Codebeispiel wird eine Implementierung der Load -Methode in einem benutzerdefinierten WebPart -Steuerelement veranschaulicht.The following code example demonstrates an implementation of the Load method in a custom WebPart control. Den vollständigen Code, der zum Ausführen dieses Beispiels erforderlich ist, finden Sie im IPersonalizable Beispiel Abschnitt in der Übersicht über die-Klasse.For the full code required to run this example, see the Example section in the IPersonalizable class overview.

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)
            {
                _sharedUrls ??= new ArrayList();
                _sharedUrls.Add(p);
            }
            else
            {
                _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);
            }
        }
    }
}

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


      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


      Protected Overridable Sub OnUrlAdded()
          _listDirty = True
          ChildControlsCreated = False

      End Sub


      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


      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

      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

Hinweise

Diese Methode wird für ein-Steuerelement aufgerufen, damit benutzerdefinierte Daten in sich selbst laden können.This method is called on a control to allow it to load custom data into itself. Außerdem kann ein Wert zurückgegeben werden, der angibt, ob der benutzerdefinierte Zustand eines Steuer Elements in den zugrunde liegenden Datenspeicher zurückgeschrieben werden muss, unabhängig davon, ob sich andere Personalisierungs Daten auf der Seite geändert haben.It can also return a value that indicates whether a control's custom state must be written back to the underlying data store, regardless of whether any other personalization data on the page has changed. Ein Steuerelement kann seine eigenen benutzerdefinierten Eigenschaften festlegen und zusätzliche interne Logik auf Grundlage der im Personalisierungs Wörterbuch enthaltenen Werte ausführen.A control can set its own custom properties and carry out additional internal logic based on the values contained in the personalization dictionary. Diese Methode wird vom Webparts-Steuerungs Satz aufgerufen, während Personalisierungs Daten auf ein Steuerelement angewendet werden.This method is called by the Web Parts control set while applying personalization data to a control.

Sie sollten auch das Zusammenschluss Verhalten der im- User PersonalizationDictionary Objekt enthaltenen Eigenschaften im SharedVergleich mit dem Bereich beachten.You should also be aware of the merge behavior of User-scoped versus Shared-scoped properties contained in the PersonalizationDictionary object. Der state -Parameter enthält eine zusammengeführte Darstellung von benutzerdefinierten Daten, die aus dem zugrunde liegenden Datenspeicher geladen wurden.The state parameter contains a merged representation of custom data that was loaded from the underlying data store. Im Shared Bereich sind alle Werte verfügbar, die zuvor hinzugefügt wurden, als sich die Shared Seite selbst im Gültigkeitsbereich befand.In Shared scope, all the values that were previously added when the page itself was in Shared scope would be available. Wenn User im Bereich ein Wert, der dem User Personalisierungs Bereich zugeordnet ist, einen Wert hinzugefügt hat, Shared wenn sich die Seite im Gültigkeitsbereich befand, und User einen anderen Wert, wenn sich die Seite im Gültigkeitsbereich befand, würde die Personalisierungs Infrastruktur Schließen User SienurdenWertstate mit dem Wert (im Gegensatz zum BereichsWert)innerhalbdes-Parametersein.SharedIn User scope, if a value associated with User personalization scope had one value added when the page was in Shared scope, and a different value when the page was in User scope, then the personalization infrastructure would only include the User-scoped value (as opposed to the Shared scope value) within the state parameter.

Gilt für: