AppearanceEditorPart Web 服务器控件提供了一个编辑器控件,最终用户可以使用该控件在相关联的 WebPart 控件上编辑数个用户界面 (UI) 属性。
AppearanceEditorPart 控件使最终用户能够编辑 WebPart 控件的几个用户界面属性。下表列出了用户可自定义的功能,以及可使用 AppearanceEditorPart 控件编辑的对应的 WebPart 控件属性值。
用户可自定义的功能 |
WebPart 控件属性 |
为标题设置文本。 |
|
选择标题和边框选项类型。 |
|
选择内容在页上的流动方向。 |
|
设置高度和单位。 |
|
设置宽度和单位。 |
|
隐藏或显示控件。 |
若要能够编辑 WebPart 控件的其他属性和行为,可使用 Web 部件控件集提供的其他 EditorPart 控件。这些控件包括 BehaviorEditorPart、LayoutEditorPart 和 PropertyGridEditorPart 控件。内置 EditorPart 控件提供了 WebPart 控件的常用编辑功能。还可以通过从 EditorPart 类继承来创建自定义编辑器控件。有关代码示例,请参见 System.Web.UI.WebControls.WebParts.EditorPart。
启用 AppearanceEditorPart 控件
AppearanceEditorPart 控件仅在 Web 部件页处于编辑模式且用户已选择关联的 WebPart 控件进行编辑时显示。
一、AppearanceEditorPart 类
AppearanceEditorPart 类是从 EditorPart 类派生的编辑器控件,用于编辑影响关联 WebPart 或其他服务器控件的外观的属性。
AppearanceEditorPart 控件使最终用户能够编辑 WebPart 控件的几个用户界面属性。显示在页中用于编辑每个属性值的控件的类型列在下表的相邻单元格中。
属性 |
用于编辑属性的控件 |
一个 TextBox 控件用于设置标题的文本。 |
|
一个 DropDownList 控件用于选择所使用的标题和边框选项的类型。 |
|
一个 DropDownList 控件用于选择内容在页上的流动方向。 |
|
一个 TextBox 控件用于设置高度的数值,一个 DropDownList 控件则用于选择单位。 |
|
一个 TextBox 控件用于设置高度的数值,一个 DropDownList 控件则用于选择单位。 |
|
一个 CheckBox 控件用于指示该控件是否已隐藏。 |
仅当 Web 部件页处于编辑模式并且已选择一个特定 WebPart 控件用于编辑时,AppearanceEditorPart 控件才会变得可见。AppearanceEditorPart 控件(与所有其他 EditorPart 控件一样),位于一个 EditorZone 区域中。
重要说明: EditorZone 区域只能包含 EditorPart 控件,且 EditorPart 控件不能放在任何其他类型的区域中。
AppearanceEditorPart 类具有最小属性集。Title 属性用于获取或设置当控件可见时显示为标题的字符串。DefaultButton 属性设置从 Panel 控件继承的属性,以便接收 AppearanceEditorPart 控件内的焦点的默认控件与 Panel 基控件中的默认控件相同。
AppearanceEditorPart 类还有两个重要方法。SyncChanges 方法重写了 EditorPart 类中的这一基方法。此方法至关重要,因为使用它可从正在编辑的 WebPart 控件获取属性值,并将这些值分配给编辑器控件中的字段。ApplyChanges 方法也很重要,因为它获取用户在编辑控件中设置的值,并在正在编辑的控件上更新这些属性值。
在大部分情况下,AppearanceEditorPart 控件应在页持久性格式中使用,方法是在 <zonetemplate> 元素中声明一个 <asp:appearanceditorpart> 元素,前一个元素又包含在网页上的 <asp:editorzone> 元素中。
若要编辑 WebPart 控件的其他属性和行为,可使用 Web 部件控件集所提供的其他 EditorPart 控件。这些控件包括 BehaviorEditorPart、LayoutEditorPart 和 PropertyGridEditorPart。提供的 EditorPart 控件应提供编辑 WebPart 控件所需的大部分编辑功能,但通过从 EditorPart 类继承还是可以创建自定义编辑器控件。
说明: 为提高可访问性,AppearanceEditorPart 控件呈现在 <fieldset> 元素中。<fieldset> 元素对 AppearanceEditorPart 控件中用于编辑的相关控件集进行分组,这也便于在可视用户代理(如普通 Web 浏览器)控件和面向语音的用户代理(如屏幕阅读软件)控件之间进行选项卡式导航。
1.1、示例
下面的代码示例演示如何在网页上声明 AppearanceEditorPart 控件,并启用它来编辑 WebPart 控件的几个用户界面属性。该代码示例包含以下四部分:
·一个用户控件,可用于更改 Web 部件页上的显示模式。
·一个网页,包含一个 EditorZone 控件和一个 AppearanceEditorPart 控件,以及一个对自定义 WebPart 控件的引用。
·一个类,包含自定义 WebPart 控件。
·对您在浏览器中加载页面时示例的运行方式的说明。
该用户控件的源代码来自于另一个主题。若要使此代码示例正常工作,需要从 演练:更改 Web 部件页上的显示模式 主题获取该用户控件的 .ascx 文件,并将该文件与此代码示例中的 .aspx 页置于同一个文件夹中。
该代码示例的第二部分为网页。它包含对一个 EditorZone 控件的声明性引用,以及一个包含对 AppearanceEditorPart 控件的声明性引用的子 <zonetemplate> 元素。页还通过使用 Register 指令(对于程序集)和 <aspSample:TextDisplayWebPart> 元素(对于控件)引用自定义 WebPart 控件。
<%@ page language="c#" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenu"
Src="DisplayModecs.ascx" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"
Assembly="TextDisplayWebPartCS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head id="Head1" runat="server">
<title>
Text Display WebPart with AppearanceEditorPart
</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<uc1:DisplayModeMenu ID="DisplayModeMenu1" runat="server" />
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart" />
</zonetemplate>
</asp:webpartzone>
<asp:EditorZone ID="EditorZone1" runat="server">
<ZoneTemplate>
<asp:AppearanceEditorPart ID="AppearanceEditorPart1"
runat="server"
Title="Edit TextDisplayWebPart Properties" />
</ZoneTemplate>
</asp:EditorZone>
</form>
</body>
</html>
该代码示例的第三部分是一个名为 TextDisplayWebPart 的自定义 WebPart 类,该类在网页中引用。必须编译此源代码,代码示例才能运行。可以显式编译源代码,并将结果程序集放在网站的 Bin 文件夹或全局程序集缓存中。另外,也可将源代码放入站点的 App_Code 文件夹中,源代码将在运行时在此文件夹中进行动态编译。
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class TextDisplayWebPart : WebPart
{
private String _contentText = null;
TextBox input;
Label DisplayContent;
Literal lineBreak;
[Personalizable(), WebBrowsable]
public String ContentText
{
get { return _contentText; }
set { _contentText = value; }
}
protected override void CreateChildControls()
{
Controls.Clear();
DisplayContent = new Label();
DisplayContent.BackColor = Color.LightBlue;
DisplayContent.Text = this.ContentText;
this.Controls.Add(DisplayContent);
lineBreak = new Literal();
lineBreak.Text = @"<br />";
Controls.Add(lineBreak);
input = new TextBox();
this.Controls.Add(input);
Button update = new Button();
update.Text = "Set Label Content";
update.Click += new EventHandler(this.submit_Click);
this.Controls.Add(update);
}
private void submit_Click(object sender, EventArgs e)
{
// Update the label string.
if (input.Text != String.Empty)
{
_contentText = input.Text + @"<br />";
input.Text = String.Empty;
DisplayContent.Text = this.ContentText;
}
}
}
}
当在浏览器中加载页时,可以在“显示模式”下拉控件中选择“编辑模式”以切换到编辑模式。可以在 TextDisplayWebPart 控件的标题栏中单击谓词菜单(向下箭头),然后单击“编辑”编辑该控件。当该编辑用户界面可见时,可看到 AppearanceEditorPart 控件。如果在编辑用户界面进行一些更改并单击“应用”按钮,可使用“显示模式”下拉列表使页返回到浏览模式,然后查看编辑更改的完整效果。