EditorPart.SyncChanges 方法

定义

WebPart 控件检索其关联 EditorPart 控件的属性值。

public:
 abstract void SyncChanges();
public abstract void SyncChanges ();
abstract member SyncChanges : unit -> unit
Public MustOverride Sub SyncChanges ()

示例

下面的代码示例演示如何在自定义EditorPart控件中实现 SyncChanges 方法。 有关运行示例所需的完整代码,请参阅类概述的 EditorPart “示例”部分。

代码示例的第一部分演示了 在名为 TextDisplayEditorPart的自定义EditorPart类中方法的SyncChanges实现。 此方法使用 属性获取对关联 TextDisplayWebPart 控件的 WebPartToEdit 引用。 然后,它获取 属性的值 TextDisplayWebPart.FontStyle ,并更新自定义控件上属性) 引用 TextDisplayEditorPart.PartContentFontStyle 的下拉列表控件 (选择的 EditorPart 项。

public override void SyncChanges()
{
  TextDisplayWebPart part = 
    (TextDisplayWebPart)WebPartToEdit;
  String currentStyle = part.FontStyle;

  // Select the current font style in the drop-down control.
  foreach (ListItem item in PartContentFontStyle.Items)
  {
    if (item.Value == currentStyle)
    {
      item.Selected = true;
      break;
    }
  }
}
Public Overrides Sub SyncChanges()
  Dim part As TextDisplayWebPart = CType(WebPartToEdit, _
                                         TextDisplayWebPart)
  Dim currentStyle As String = part.FontStyle

  ' Select the current font style in the drop-down control.
  Dim item As ListItem
  For Each item In PartContentFontStyle.Items
    If item.Value = currentStyle Then
      item.Selected = True
      Exit For
    End If
  Next item

End Sub

代码示例的第二部分演示关联的 WebPart 控件 TextDisplayWebPart如何创建关联 EditorPart 控件的集合 (在这种情况下,集合中只有一个名为 EditorPartTextDisplayEditorPart 的控件) 方法的 CreateEditorParts 实现。 当控件进入编辑模式时, TextDisplayWebPart 将执行此方法。

public override EditorPartCollection CreateEditorParts()
{
  ArrayList editorArray = new ArrayList();
  TextDisplayEditorPart edPart = new TextDisplayEditorPart();
  edPart.ID = this.ID + "_editorPart1";
  editorArray.Add(edPart);
  EditorPartCollection editorParts = 
    new EditorPartCollection(editorArray);
  return editorParts;
}

public override object WebBrowsableObject
{
  get { return this; }
}
Public Overrides Function CreateEditorParts() _
                            As EditorPartCollection
  Dim editorArray As New ArrayList()
  Dim edPart as New TextDisplayEditorPart()
  edPart.ID = Me.ID & "_editorPart1"
  editorArray.Add(edPart)
  Dim editorParts As New EditorPartCollection(editorArray)
  Return editorParts

End Function

Public Overrides ReadOnly Property WebBrowsableObject() _
                                    As Object
  Get
    Return Me
  End Get
End Property

注解

方法 SyncChanges 是控件上的一个关键 EditorPart 方法。 它定义为 类中的 EditorPart 抽象方法,必须由继承的控件实现。 方法的目的是从 WebPart 属性中 WebPartToEdit 引用的控件中检索当前值,并使用这些值更新控件中的 EditorPart 字段,以便用户可以编辑这些值。

SyncChanges只要关联WebPart控件中的值可能已更改,就会调用 方法。 对于每个EditorPart控件,EditorZoneBase包含 控件的区域在调用 ApplyChanges 方法后立即调用 SyncChanges 方法,以便控件中的EditorPart值始终与关联WebPart控件中的值同步。 调用 方法的另一种情况 SyncChangesWebPart 控件进入编辑模式时。

注意

SyncChanges如果该方法返回 false,则不会在 ApplyChanges 方法之后调用 方法,因为在这种情况下,发生了错误。

实施者说明

派生自 类的 EditorPart 类必须实现 SyncChanges() 方法。 实现的方法使用 WebPartToEdit 属性获取对关联控件的引用,然后使用关联WebPart控件中的属性值更新EditorPart控件。

适用于

另请参阅