CatalogZoneBase 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
作為充當目錄之所有區域控制項的基底類別。 目錄包含 WebPart 控制項的清單,使用者可以將這些控制項加入網頁。
public ref class CatalogZoneBase abstract : System::Web::UI::WebControls::WebParts::ToolZone, System::Web::UI::IPostBackDataHandler
public abstract class CatalogZoneBase : System.Web.UI.WebControls.WebParts.ToolZone, System.Web.UI.IPostBackDataHandler
type CatalogZoneBase = class
inherit ToolZone
interface IPostBackDataHandler
Public MustInherit Class CatalogZoneBase
Inherits ToolZone
Implements IPostBackDataHandler
- 繼承
- 衍生
- 實作
範例
下列程式代碼範例示範 類別的數個 CatalogZoneBase 宣告式和程序設計用法。 因為類別是抽象的,所以程式代碼範例會使用隨附於 Web 元件控件集的衍生 CatalogZone 類別,示範其繼承自 CatalogZoneBase 類別的屬性和方法。
程式代碼範例有四個部分:
使用者控制件,可讓您變更網頁上的顯示模式。
網頁,其中包含控件的參考 CatalogZone ,以及示範使用某些索引鍵 CatalogZoneBase 類別成員的某些程序代碼。
新增至自定義控件的自定義WebPartCatalogZone控制件。
範例在瀏覽器中運作方式的描述。
此程式代碼範例的第一個部分是使用者控件,可讓您變更頁面上的顯示模式。 如需此控件中顯示模式和原始碼描述的詳細資訊,請參閱逐步解說 :變更網頁元件頁面上的顯示模式。
<%@ control language="C#" classname="DisplayModeMenuCS"%>
<script runat="server">
// Use a field to reference the current WebPartManager.
WebPartManager _manager;
void Page_Init(object sender, EventArgs e)
{
Page.InitComplete += new EventHandler(InitComplete);
}
void InitComplete(object sender, System.EventArgs e)
{
_manager = WebPartManager.GetCurrentWebPartManager(Page);
String browseModeName = WebPartManager.BrowseDisplayMode.Name;
// Fill the dropdown with the names of supported display modes.
foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
{
String modeName = mode.Name;
// Make sure a mode is enabled before adding it.
if (mode.IsEnabled(_manager))
{
ListItem item = new ListItem(modeName, modeName);
DisplayModeDropdown.Items.Add(item);
}
}
// If shared scope is allowed for this user, display the scope-switching
// UI and select the appropriate radio button for the current user scope.
if (_manager.Personalization.CanEnterSharedScope)
{
Panel2.Visible = true;
if (_manager.Personalization.Scope == PersonalizationScope.User)
RadioButton1.Checked = true;
else
RadioButton2.Checked = true;
}
}
// Change the page to the selected display mode.
void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)
{
String selectedMode = DisplayModeDropdown.SelectedValue;
WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
if (mode != null)
_manager.DisplayMode = mode;
}
// Set the selected item equal to the current display mode.
void Page_PreRender(object sender, EventArgs e)
{
ListItemCollection items = DisplayModeDropdown.Items;
int selectedIndex =
items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
DisplayModeDropdown.SelectedIndex = selectedIndex;
}
// Reset all of a user's personalization data for the page.
protected void LinkButton1_Click(object sender, EventArgs e)
{
_manager.Personalization.ResetPersonalizationState();
}
// If not in User personalization scope, toggle into it.
protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
{
if (_manager.Personalization.Scope == PersonalizationScope.Shared)
_manager.Personalization.ToggleScope();
}
// If not in Shared scope, and if user is allowed, toggle the scope.
protected void RadioButton2_CheckedChanged(object sender, EventArgs e)
{
if (_manager.Personalization.CanEnterSharedScope &&
_manager.Personalization.Scope == PersonalizationScope.User)
_manager.Personalization.ToggleScope();
}
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="230"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
<%@ control language="vb" classname="DisplayModeMenuVB"%>
<script runat="server">
' Use a field to reference the current WebPartManager.
Dim _manager As WebPartManager
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
AddHandler Page.InitComplete, AddressOf InitComplete
End Sub
Sub InitComplete(ByVal sender As Object, ByVal e As System.EventArgs)
_manager = WebPartManager.GetCurrentWebPartManager(Page)
Dim browseModeName As String = WebPartManager.BrowseDisplayMode.Name
' Fill the dropdown with the names of supported display modes.
Dim mode As WebPartDisplayMode
For Each mode In _manager.SupportedDisplayModes
Dim modeName As String = mode.Name
' Make sure a mode is enabled before adding it.
If mode.IsEnabled(_manager) Then
Dim item As New ListItem(modeName, modeName)
DisplayModeDropdown.Items.Add(item)
End If
Next mode
' If shared scope is allowed for this user, display the scope-switching
' UI and select the appropriate radio button for the current user scope.
If _manager.Personalization.CanEnterSharedScope Then
Panel2.Visible = True
If _manager.Personalization.Scope = PersonalizationScope.User Then
RadioButton1.Checked = True
Else
RadioButton2.Checked = True
End If
End If
End Sub
' Change the page to the selected display mode.
Sub DisplayModeDropdown_SelectedIndexChanged(ByVal sender As Object, _
ByVal e As EventArgs)
Dim selectedMode As String = DisplayModeDropdown.SelectedValue
Dim mode As WebPartDisplayMode = _
_manager.SupportedDisplayModes(selectedMode)
If Not (mode Is Nothing) Then
_manager.DisplayMode = mode
End If
End Sub
' Set the selected item equal to the current display mode.
Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)
Dim items As ListItemCollection = DisplayModeDropdown.Items
Dim selectedIndex As Integer = _
items.IndexOf(items.FindByText(_manager.DisplayMode.Name))
DisplayModeDropdown.SelectedIndex = selectedIndex
End Sub
' Reset all of a user's personalization data for the page.
Protected Sub LinkButton1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
_manager.Personalization.ResetPersonalizationState()
End Sub
' If not in User personalization scope, toggle into it.
Protected Sub RadioButton1_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.Scope = PersonalizationScope.Shared Then
_manager.Personalization.ToggleScope()
End If
End Sub
' If not in Shared scope, and if user is allowed, toggle the scope.
Protected Sub RadioButton2_CheckedChanged(ByVal sender As Object, _
ByVal e As EventArgs)
If _manager.Personalization.CanEnterSharedScope AndAlso _
_manager.Personalization.Scope = PersonalizationScope.User Then
_manager.Personalization.ToggleScope()
End If
End Sub
</script>
<div>
<asp:Panel ID="Panel1" runat="server"
Borderwidth="1"
Width="230"
BackColor="lightgray"
Font-Names="Verdana, Arial, Sans Serif" >
<asp:Label ID="Label1" runat="server"
Text=" Display Mode"
Font-Bold="true"
Font-Size="8"
Width="120"
AssociatedControlID="DisplayModeDropdown"/>
<asp:DropDownList ID="DisplayModeDropdown" runat="server"
AutoPostBack="true"
Width="120"
OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
<asp:LinkButton ID="LinkButton1" runat="server"
Text="Reset User State"
ToolTip="Reset the current user's personalization data for the page."
Font-Size="8"
OnClick="LinkButton1_Click" />
<asp:Panel ID="Panel2" runat="server"
GroupingText="Personalization Scope"
Font-Bold="true"
Font-Size="8"
Visible="false" >
<asp:RadioButton ID="RadioButton1" runat="server"
Text="User"
AutoPostBack="true"
GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
<asp:RadioButton ID="RadioButton2" runat="server"
Text="Shared"
AutoPostBack="true"
GroupName="Scope"
OnCheckedChanged="RadioButton2_CheckedChanged" />
</asp:Panel>
</asp:Panel>
</div>
程式代碼範例的第二個部分是網頁,其中包含控件的 CatalogZone 宣告式參考。 頁面頂端附近有兩 Register
個指示詞,一個用於使用者控件,另一個用於自定義 WebPart 控件。 請注意,元素 <asp:WebPartZone>
下方是一個 <asp: CatalogZone>
元素,其中包含自定義 WebPart 控件的宣告式參考,以及 ASP.NET Calendar 控件。 區域也會設定各種標記和屬性,以判斷其外觀和行為。 頁面中的 <script>
標記之間是各種事件處理程序代碼,其中大部分都會示範成員的各種程序設計用法 CatalogZoneBase 。
<%@ page language="c#" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenuCS"
Src="DisplayModeMenucs.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">
<script runat="server">
WebPartManager manager;
protected void WebPartManager1_DisplayModeChanged(object sender,
WebPartDisplayModeEventArgs e)
{
if (e.OldDisplayMode.Name != "Catalog")
Panel1.Visible = true;
else
Panel1.Visible = false;
}
// <snippet3>
protected void Button1_Click(object sender, EventArgs e)
{
if (CatalogZone1.AddVerb.Enabled)
{
CatalogZone1.AddVerb.Enabled = false;
CatalogZone1.CloseVerb.Enabled = false;
}
else
{
CatalogZone1.AddVerb.Enabled = true;
CatalogZone1.CloseVerb.Enabled = true;
}
}
// </snippet3>
// <snippet4>
protected void Button2_Click(object sender, EventArgs e)
{
Label1.Text = "<h3>CatalogPart List</h3>";
foreach(CatalogPart part in CatalogZone1.CatalogParts)
{
Label1.Text += part.ID + "<br />";
}
}
// </snippet4>
// <snippet5>
protected void Button3_Click(object sender, EventArgs e)
{
CatalogZone1.SelectTargetZoneText = "Add to zone";
CatalogZone1.EmptyZoneText = "Zone is empty";
CatalogZone1.HeaderText = "My Updated Header";
CatalogZone1.InstructionText = "My Updated Instructions";
}
// </snippet5>
// <snippet6>
protected void Button4_Click(object sender, EventArgs e)
{
Label1.Text = CatalogZone1.SelectedCatalogPartID;
}
// </snippet6>
// <snippet7>
protected void Button5_Click(object sender, EventArgs e)
{
CatalogZone1.PartLinkStyle.ForeColor = System.Drawing.Color.Red;
CatalogZone1.SelectedPartLinkStyle.ForeColor =
System.Drawing.Color.Blue;
}
// </snippet7>
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>
CatalogZoneBase Example
</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server"
OnDisplayModeChanged="WebPartManager1_DisplayModeChanged" />
<uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" />
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<asp:BulletedList
ID="BulletedList1"
Runat="server"
DisplayMode="HyperLink"
Title="Favorite Links" >
<asp:ListItem Value="http://msdn.microsoft.com">
MSDN
</asp:ListItem>
<asp:ListItem Value="http://www.asp.net">
ASP.NET
</asp:ListItem>
<asp:ListItem Value="http://www.msn.com">
MSN
</asp:ListItem>
</asp:BulletedList>
</ZoneTemplate>
</asp:webpartzone>
<asp:CatalogZone ID="CatalogZone1" runat="server"
EmptyZoneText="No controls are in the zone."
HeaderText="My Web Parts Catalog"
InstructionText="Add Web Parts controls to the zone."
PartLinkStyle-Font-Italic="true"
SelectedPartLinkStyle-Font-Bold="true"
SelectTargetZoneText="Select zone"
AddVerb-Text="Add Control"
CloseVerb-Description="Close and return to browse mode."
SelectedCatalogPartID="Currently Selected CatalogPart ID.">
<ZoneTemplate>
<asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1"
runat="server">
<WebPartsTemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart"
ExportMode="All"/>
<asp:Calendar id="calendar1" runat="server"
Title="My Calendar" />
</WebPartsTemplate>
</asp:DeclarativeCatalogPart>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
<asp:ImportCatalogPart ID="ImportCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<hr />
<asp:CatalogZone ID="CatalogZone2" runat="server"
BorderWidth="2"
HeaderText="My Empty CatalogZone"
EmptyZoneText="No controls are in the zone." />
<hr />
<asp:Panel ID="Panel1" runat="server" Visible="false">
<asp:Button ID="Button1" runat="server" Width="200"
Text="Enable or Disable Verbs"
OnClick="Button1_Click" />
<br />
<asp:Button ID="Button2" runat="server" Width="200"
Text="List CatalogParts" OnClick="Button2_Click" />
<br />
<asp:Button ID="Button3" runat="server" Width="200"
Text="Set Zone Text Properties" OnClick="Button3_Click" />
<br />
<asp:Button ID="Button4" runat="server" Width="200"
Text="Show Selected CatalogPart ID" OnClick="Button4_Click" />
<br />
<asp:Button ID="Button5" runat="server" Width="200"
Text="Change Part Link Styles" OnClick="Button5_Click" />
<br />
<asp:Label ID="Label1" runat="server" Text="" /></asp:Panel>
</form>
</body>
</html>
<%@ page language="vb" %>
<%@ register TagPrefix="uc1"
TagName="DisplayModeMenuVB"
Src="DisplayModeMenuvb.ascx" %>
<%@ register tagprefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"
Assembly="TextDisplayWebPartVB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim manager As WebPartManager
Protected Sub WebPartManager1_DisplayModeChanged(ByVal sender _
As Object, ByVal e As WebPartDisplayModeEventArgs)
If e.OldDisplayMode.Name <> "Catalog" Then
Panel1.Visible = True
Else
Panel1.Visible = False
End If
End Sub
' <snippet3>
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
If CatalogZone1.AddVerb.Enabled Then
CatalogZone1.AddVerb.Enabled = False
CatalogZone1.CloseVerb.Enabled = False
Else
CatalogZone1.AddVerb.Enabled = True
CatalogZone1.CloseVerb.Enabled = True
End If
End Sub
' </snippet3>
' <snippet4>
Protected Sub Button2_Click(ByVal sender As Object, _
ByVal e As EventArgs)
Label1.Text = "<h3>CatalogPart List</h3>"
Dim part As CatalogPart
For Each part In CatalogZone1.CatalogParts
Label1.Text += part.ID + "<br />"
Next part
End Sub
' </snippet4>
' <snippet5>
Protected Sub Button3_Click(ByVal sender As Object, _
ByVal e As EventArgs)
CatalogZone1.SelectTargetZoneText = "Add to zone"
CatalogZone1.EmptyZoneText = "Zone is empty"
CatalogZone1.HeaderText = "My Updated Header"
CatalogZone1.InstructionText = "My Updated Instructions"
End Sub
' </snippet5>
' <snippet6>
Protected Sub Button4_Click(ByVal sender As Object, _
ByVal e As EventArgs)
Label1.Text = CatalogZone1.SelectedCatalogPartID
End Sub
' </snippet6>
' <snippet7>
Protected Sub Button5_Click(ByVal sender As Object, _
ByVal e As EventArgs)
CatalogZone1.PartLinkStyle.ForeColor = _
System.Drawing.Color.Red
CatalogZone1.SelectedPartLinkStyle.ForeColor = _
System.Drawing.Color.Blue
End Sub
' </snippet7>
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>
CatalogZoneBase Example
</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server"
OnDisplayModeChanged="WebPartManager1_DisplayModeChanged" />
<uc1:DisplayModeMenuVB ID="DisplayModeMenu1" runat="server" />
<asp:webpartzone id="zone1" runat="server">
<zonetemplate>
<asp:BulletedList
ID="BulletedList1"
Runat="server"
DisplayMode="HyperLink"
Title="Favorite Links" >
<asp:ListItem Value="http://msdn.microsoft.com">
MSDN
</asp:ListItem>
<asp:ListItem Value="http://www.asp.net">
ASP.NET
</asp:ListItem>
<asp:ListItem Value="http://www.msn.com">
MSN
</asp:ListItem>
</asp:BulletedList>
</ZoneTemplate>
</asp:webpartzone>
<asp:CatalogZone ID="CatalogZone1" runat="server"
EmptyZoneText="No controls are in the zone."
HeaderText="My Web Parts Catalog"
InstructionText="Add Web Parts controls to the zone."
PartLinkStyle-Font-Italic="true"
SelectedPartLinkStyle-Font-Bold="true"
SelectTargetZoneText="Select zone"
AddVerb-Text="Add Control"
CloseVerb-Description="Close and return to browse mode."
SelectedCatalogPartID="Currently Selected CatalogPart ID.">
<ZoneTemplate>
<asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1"
runat="server">
<WebPartsTemplate>
<aspSample:TextDisplayWebPart
runat="server"
id="textwebpart"
title = "Text Content WebPart"
ExportMode="All"/>
<asp:Calendar id="calendar1" runat="server"
Title="My Calendar" />
</WebPartsTemplate>
</asp:DeclarativeCatalogPart>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
<asp:ImportCatalogPart ID="ImportCatalogPart1" runat="server" />
</ZoneTemplate>
</asp:CatalogZone>
<hr />
<asp:CatalogZone ID="CatalogZone2" runat="server"
BorderWidth="2"
HeaderText="My Empty CatalogZone"
EmptyZoneText="No controls are in the zone." />
<hr />
<asp:Panel ID="Panel1" runat="server" Visible="false">
<asp:Button ID="Button1" runat="server" Width="200"
Text="Enable or Disable Verbs"
OnClick="Button1_Click" />
<br />
<asp:Button ID="Button2" runat="server" Width="200"
Text="List CatalogParts" OnClick="Button2_Click" />
<br />
<asp:Button ID="Button3" runat="server" Width="200"
Text="Set Zone Text Properties" OnClick="Button3_Click" />
<br />
<asp:Button ID="Button4" runat="server" Width="200"
Text="Show Selected CatalogPart ID" OnClick="Button4_Click" />
<br />
<asp:Button ID="Button5" runat="server" Width="200"
Text="Change Part Link Styles" OnClick="Button5_Click" />
<br />
<asp:Label ID="Label1" runat="server" Text="" /></asp:Panel>
</form>
</body>
</html>
程式代碼範例的第三個部分是名為 TextDisplayWebPart
的自定義WebPart控件。 它會在區域內宣告,而終端使用者可以從目錄將它新增至頁面。 若要執行程式碼範例,您必須編譯此原始程式碼。 您可以明確地編譯它,並將產生的元件放在網站的 Bin 資料夾或全域程式集緩存中。 或者,您可以將原始程式碼放在月臺的 App_Code資料夾中,其將在運行時間動態編譯。 如需這兩種編譯方法的示範,請參閱逐步解 說:開發和使用自定義 Web 伺服器控制件。
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 (!string.IsNullOrEmpty(input.Text))
{
_contentText = input.Text + @"<br />";
input.Text = String.Empty;
DisplayContent.Text = this.ContentText;
}
}
}
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
Imports System.Web.UI
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 TextDisplayWebPart
Inherits WebPart
Private _contentText As String = Nothing
Private _fontStyle As String = Nothing
Private input As TextBox
Private DisplayContent As Label
Private lineBreak As Literal
<Personalizable(), WebBrowsable()> _
Public Property ContentText() As String
Get
Return _contentText
End Get
Set(ByVal value As String)
_contentText = value
End Set
End Property
Protected Overrides Sub CreateChildControls()
Controls.Clear()
DisplayContent = New Label()
DisplayContent.BackColor = Color.LightBlue
DisplayContent.Text = Me.ContentText
Me.Controls.Add(DisplayContent)
lineBreak = New Literal()
lineBreak.Text = "<br />"
Controls.Add(lineBreak)
input = New TextBox()
Me.Controls.Add(input)
Dim update As New Button()
update.Text = "Set Label Content"
AddHandler update.Click, AddressOf Me.submit_Click
Me.Controls.Add(update)
End Sub
Private Sub submit_Click(ByVal sender As Object, _
ByVal e As EventArgs)
' Update the label string.
If input.Text <> String.Empty Then
_contentText = input.Text + "<br />"
input.Text = String.Empty
DisplayContent.Text = Me.ContentText
End If
End Sub
End Class
End Namespace
請注意,若要讓程式代碼範例正常運作,您必須在 Web.config 檔案中新增設定,才能啟用匯出網頁元件描述檔案。 請確定您在與這個程式代碼範例網頁相同的目錄中有一個 Web.config 檔案。 在區<system.web>
段中,請確定有屬性<webParts>
enableExport
設定為 true
的專案,如下列標記所示。
<webParts enableExport="true">
...
</webParts>
當您在瀏覽器中載入頁面時,您可以從下拉式清單框中選取 [ 目錄 ],以切換至目錄顯示模式。 當目錄可見時,您可以看到可從目錄新增至頁面的兩個伺服器控件,也可以在 UI 中記下宣告式和程式設計類別成員的效果 CatalogZoneBase 。
備註
類別 CatalogZoneBase 是繼承自 類別的 ToolZone 基類。 它會為衍生區域提供一組基底行為。
類別 CatalogZoneBase 提供唯一的使用者介面 (UI) ,可讓使用者將控件和其他伺服器控制項新增 WebPart 至網頁。 衍生自 類別的 CatalogZoneBase 控件,例如 CatalogZone,是實際放在網頁上的控件。 它們可作為其他控件的容器,稱為 CatalogPart 控件,可建立伺服器控件清單,讓使用者新增至頁面。 只有在頁面處於目錄顯示模式時,才會顯示衍生自 CatalogZoneBase 類別的區域。
注意
CatalogZoneBase區域只能CatalogPart包含控件,相反地,CatalogPart控件只能CatalogZoneBase位於區域中。
將伺服器控制項新增至目錄的機制是衍生自基 CatalogPart 類之三個控件的下列集合。
控制 | 描述 |
---|---|
PageCatalogPart | 維護頁面上已關閉之控件的參考。 這些控制件可以重新開啟, (由使用者新增回頁面) 。 |
DeclarativeCatalogPart | 包含網頁標記中 Web 元件目錄中宣告之控件的參考。 用戶可以將這些控件新增至網頁。 |
ImportCatalogPart | 提供使用者將定義檔上傳至目錄的UI,以便將控件新增至網頁。 定義檔是具有的 XML 檔案。匯入控件設定的 WebPart 擴展名。 控件必須存在於伺服器上,才能匯入定義檔。 |
類別 CatalogZoneBase 具有許多屬性,可用於顯示控件目錄 WebPart 。 屬性 AddVerb 會參考將選取控件從類別目錄新增至頁面的動詞,而 CloseVerb 屬性會參考關閉目錄並傳回頁面的顯示模式以流覽模式的動詞。 屬性 CatalogParts 會參考區域中所有 CatalogPart 控件的集合。 數個文字導向屬性,例如 EmptyZoneText、 HeaderText和 InstructionText,會覆寫基底屬性,以提供適合目錄的預設文字。 屬性 SelectTargetZoneText 包含下拉式清單控制件旁的文字,可讓用戶選擇要新增控件的區域。
類別中包含 CatalogZoneBase 數個其他屬性。 屬性 SelectedCatalogPartID 是目前選取 CatalogPart 控件的唯一字串標識碼。 屬性ShowCatalogIcons會指出是否要在控件上WebPart設定 CatalogIconImageUrl 屬性,以顯示可以與控件相關聯的圖示。
屬性 PartLinkStyle 包含目前未在區域中選取之 CatalogPart 控件連結的樣式屬性。 相反地, SelectedPartLinkStyle 屬性包含使用者目前在區域中選取之 CatalogPart 控件連結的樣式屬性。
除了 屬性之外,類別中也有一些方法 CatalogZoneBase ,除了繼承自其他基底控件的標準事件處理和轉譯方法之外,這些方法也專為處理控件目錄而設計。 方法 CreateCatalogPartChrome 會建立 chrome (周邊 UI 元素,例如框線、動詞、圖示和標題) ,以圍繞區域中的每個 CatalogPart 控件,也會處理控件的轉譯。 方法是 CreateCatalogParts 抽象方法;衍生類別會覆寫它,以建立區域中包含之所有 CatalogPart 控件的實例。 InvalidateCatalogParts如果區域中的控件集合CatalogPart因某些程序設計原因而變更,而且衍生類別需要重新建立集合,則衍生類別可以呼叫 方法。 方法 LoadPostData 會在頁面回傳回伺服器時,載入目錄中控件旁 WebPart 的複選框先前現有的狀態;相反地, SaveControlState 此方法會儲存複選框的狀態。 最後, RenderCatalogPartLinks 方法會提供區域中包含的每個 CatalogPart 控件連結的所有轉譯。
給實施者的注意事項
如果您要開發用於載入 CatalogPart 控制元件的自訂區域,您必須判斷是否要提供區域範本支援。 區域範本是由實 ITemplate 作 介面的類型所建立,而且如果您想要使用自定義區域啟用頁面開發人員,以在網頁的宣告式標記中參考 CatalogPart 您區域內的控件,則為必要專案。 如果您需要區域範本支援,您應該繼承自 CatalogZone 類別。 相反地,如果您的自定義區域及其 CatalogPart 控件會獨立建立,而且會以程序設計方式建立它們,而不會讓頁面開發人員在區域範本中以宣告方式指定控件,則您可以直接從 CatalogZoneBase 類別繼承。 如果您繼承自 CatalogZoneBase 類別,則必須覆寫 CreateCatalogParts() 方法,並將目錄中想要的其他伺服器控件新增 WebPart 至 CatalogPartCollection 物件。
建構函式
CatalogZoneBase() |
初始化這個類別,以供繼承的類別執行個體使用。 這個建構函式只能由繼承的類別呼叫。 |
屬性
AccessKey |
取得或設定便捷鍵 (Access Key),可讓您快速巡覽至 Web 伺服器控制項。 (繼承來源 WebControl) |
Adapter |
針對控制項取得瀏覽器的特定配置器。 (繼承來源 Control) |
AddVerb |
取得 WebPartVerb 物件的參考,這個物件可讓使用者從目錄加入控制項至 Web 組件頁面。 |
AppRelativeTemplateSourceDirectory |
取得或設定包含了此控制項之 Page 或 UserControl 物件的相對應用程式虛擬目錄。 (繼承來源 Control) |
AssociatedDisplayModes |
取得與特定 WebPartDisplayMode 區域相關聯的 ToolZone 物件集合。 (繼承來源 ToolZone) |
Attributes |
取得任意屬性 (Attribute) 的集合 (只供呈現),不與控制項上的屬性 (Property) 對應。 (繼承來源 WebControl) |
BackColor |
取得或設定 Web 伺服器控制項的背景色彩。 (繼承來源 WebControl) |
BackImageUrl |
取得或設定區域背景影像的 URL。 (繼承來源 WebZone) |
BindingContainer |
取得包含了此控制項之資料繫結的控制項。 (繼承來源 Control) |
BorderColor |
取得或設定 Web 控制項的框線色彩。 (繼承來源 WebControl) |
BorderStyle |
取得或設定 Web 伺服器控制項的框線樣式。 (繼承來源 WebControl) |
BorderWidth |
取得或設定 Web 伺服器控制項的框線寬度。 (繼承來源 WebControl) |
CatalogPartChrome |
取得與 CatalogPartChrome 區域相關聯之 CatalogZoneBase 類別執行個體的參考。 |
CatalogParts |
取得 CatalogPart 區域中包含之所有 CatalogZoneBase 控制項的集合。 |
ChildControlsCreated |
取得值,指出是否已經建立伺服器控制項的子控制項。 (繼承來源 Control) |
ClientID |
取得 ASP.NET 所產生之 HTML 標記的控制項識別碼。 (繼承來源 Control) |
ClientIDMode |
取得或設定用來產生 ClientID 屬性值的演算法。 (繼承來源 Control) |
ClientIDSeparator |
取得字元值,表示在 ClientID 屬性中所使用的分隔字元。 (繼承來源 Control) |
CloseVerb |
取得 WebPartVerb 物件的參考,該物件可讓使用者關閉目錄使用者介面 (UI),並讓頁面返回標準瀏覽模式。 |
Context |
取得與目前 Web 要求的伺服器控制項關聯的 HttpContext 物件。 (繼承來源 Control) |
Controls |
取得表示 ControlCollection 中之子控制項的 CompositeControl 物件。 (繼承來源 CompositeControl) |
ControlStyle |
取得 Web 伺服器控制項的樣式。 這個屬性主要由控制項開發人員使用。 (繼承來源 WebControl) |
ControlStyleCreated |
取得值,指出 Style 物件是否已經為 ControlStyle 屬性建立。 這個屬性主要由控制項開發人員使用。 (繼承來源 WebControl) |
CssClass |
取得或設定用戶端上 Web 伺服器控制項所呈現的階層式樣式表 (CSS)。 (繼承來源 WebControl) |
DataItemContainer |
如果命名容器實作 IDataItemContainer,則取得命名容器的參考。 (繼承來源 Control) |
DataKeysContainer |
如果命名容器實作 IDataKeysControl,則取得命名容器的參考。 (繼承來源 Control) |
DesignMode |
取得值,指出控制項是否正用於設計介面上。 (繼承來源 Control) |
Display |
取得值,其中該值指出目前是否顯示 ToolZone 控制項。 (繼承來源 ToolZone) |
EditUIStyle |
取得 ToolZone 控制項包含之控制項的樣式屬性。 (繼承來源 ToolZone) |
EmptyZoneText |
取得或設定區域不包含控制項時出現的訊息。 |
EmptyZoneTextStyle |
取得空區域中替代符號文字的樣式屬性。 (繼承來源 WebZone) |
Enabled |
取得或設定值,指出 Web 伺服器控制項是否啟用。 (繼承來源 WebControl) |
EnableTheming |
取得或設定值,指出佈景主題是否套用至此控制項。 (繼承來源 WebControl) |
EnableViewState |
取得或設定值,該值表示伺服器控制項是否對要求的用戶端而言保持其檢視狀態,以及它包含的任何子控制項狀態。 (繼承來源 Control) |
ErrorStyle |
取得呈現錯誤訊息的樣式屬性,無法載入或建立 WebPart 控制項時會顯示該錯誤訊息。 (繼承來源 WebZone) |
Events |
取得控制項事件處理常式委派 (Delegate) 的清單。 這個屬性是唯讀的。 (繼承來源 Control) |
Font |
取得與 Web 伺服器控制項關聯的字型屬性。 (繼承來源 WebControl) |
FooterStyle |
取得區域頁尾區內容的樣式屬性。 (繼承來源 WebZone) |
ForeColor |
取得或設定 Web 伺服器控制項的前景色彩 (通常是文字的色彩)。 (繼承來源 WebControl) |
HasAttributes |
取得值,指出控制項是否已經設定屬性。 (繼承來源 WebControl) |
HasChildViewState |
取得值,指出目前伺服器控制項的子控制項是否有任何已儲存的檢視狀態設定。 (繼承來源 Control) |
HasFooter |
取得值,表示區域是否具有頁尾區。 (繼承來源 WebZone) |
HasHeader |
取得值,表示區域是否具有頁首區。 (繼承來源 WebZone) |
HeaderCloseVerb |
取得 WebPartVerb 控制項頁首中 ToolZone 物件的參考,該物件用於關閉控制項。 (繼承來源 ToolZone) |
HeaderStyle |
取得區域頁首區內容的樣式屬性。 (繼承來源 WebZone) |
HeaderText |
取得或設定區域的頁首區域文字。 |
HeaderVerbStyle |
取得顯示於 ToolZone 控制項中所有頁首動詞命令的樣式屬性。 (繼承來源 ToolZone) |
Height |
取得或設定 Web 伺服器控制項的高度。 (繼承來源 WebControl) |
ID |
取得或設定指派給伺服器控制項的程式設計識別項。 (繼承來源 Control) |
IdSeparator |
取得用來分隔控制項識別項的字元。 (繼承來源 Control) |
InstructionText |
取得或設定為使用者提供指示之區域中的文字。 |
InstructionTextStyle |
取得顯示在 ToolZone 控制項頂端之指示文字的樣式屬性。 (繼承來源 ToolZone) |
IsChildControlStateCleared |
取得值,指出這個控制項中所包含的控制項是否有控制項狀態。 (繼承來源 Control) |
IsEnabled |
取得值,指出是否啟用控制項。 (繼承來源 WebControl) |
IsTrackingViewState |
取得值,指出伺服器控制項是否正在儲存檢視狀態的變更。 (繼承來源 Control) |
IsViewStateEnabled |
取得值,指出這個控制項是否已啟用檢視狀態。 (繼承來源 Control) |
LabelStyle |
取得標籤內容的樣式屬性,該標籤顯示在 ToolZone 控制項中的編輯控制項旁。 衍生的 ToolZone 控制項 (例如 CatalogZone 和 EditorZone) 會將樣式套用至標籤。 (繼承來源 ToolZone) |
LoadViewStateByID |
取得值,指出控制項是否依 ID (而不是索引) 參與載入其檢視狀態。 (繼承來源 Control) |
NamingContainer |
取得伺服器控制項命名容器的參考,其建立唯一命名空間,在具有相同 ID 屬性值的伺服器控制項之間作區別。 (繼承來源 Control) |
Padding |
取得或設定表格的儲存格填補屬性,該表格包含區域的 WebPart 控制項。 (繼承來源 WebZone) |
Page |
取得含有伺服器控制項的 Page 執行個體的參考。 (繼承來源 Control) |
Parent |
在網頁控制階層架構中取得伺服器控制項之父控制項的參考。 (繼承來源 Control) |
PartChromePadding |
取得或設定 WebPart 控制項的內容與此控制項的框線之間的距離。 (繼承來源 WebZone) |
PartChromeStyle |
取得樣式特性,該樣式特性套用至區域中 Web 組件控制項的框線。 (繼承來源 WebZone) |
PartChromeType |
取得或設定區域中架構 Web 組件控制項的框線類型。 (繼承來源 WebZone) |
PartLinkStyle |
取得包含 CatalogPart 控制項之樣式屬性的物件,而這些控制項目前在區域中並未選取。 |
PartStyle |
取得樣式特性,該樣式特性套用至區域中每個 Web 組件控制項的框線和內容。 (繼承來源 WebZone) |
PartTitleStyle |
取得區域中每個 Web 組件控制項標題列內容的樣式屬性。 (繼承來源 WebZone) |
RenderClientScript |
取得值,指出是否在 Web 組件頁面上呈現用戶端指令碼。 (繼承來源 WebZone) |
RenderingCompatibility |
取得值,這個值會指定將與呈現 HTML 相容的 ASP.NET 版本。 (繼承來源 Control) |
SelectedCatalogPartID |
取得或設定字串,做為目前在區域中所選取之 CatalogPart 控制項的識別項。 |
SelectedPartLinkStyle |
取得包含 CatalogPart 控制項之樣式屬性的物件,而此控制項目前已在區域中選取。 |
SelectTargetZoneText |
取得或設定目錄使用者介面 (UI) 中控制項旁的文字,此控制項允許使用者選擇要加入已選取控制項的區域。 |
ShowCatalogIcons |
取得或設定值,指出目錄中的伺服器控制項是否在目錄中顯示關聯的圖示。 |
Site |
當呈現在設計介面上時,取得裝載目前控制項之容器的資訊。 (繼承來源 Control) |
SkinID |
取得或設定要套用至控制項的面板。 (繼承來源 WebControl) |
Style |
取得文字屬性的集合,將呈現為 Web 伺服器控制項的外部標記上的樣式屬性。 (繼承來源 WebControl) |
SupportsDisabledAttribute |
取得值,這個值表示當控制項的 |
TabIndex |
取得或設定 Web 伺服器控制項的定位索引。 (繼承來源 WebControl) |
TagKey |
取得對應至這個 Web 伺服器控制項的 HtmlTextWriterTag 值。 這個屬性主要由控制項開發人員使用。 (繼承來源 WebZone) |
TagName |
取得控制項標記的名稱。 這個屬性主要由控制項開發人員使用。 (繼承來源 WebControl) |
TemplateControl |
取得或設定包含了此控制項之樣板的參考。 (繼承來源 Control) |
TemplateSourceDirectory |
取得包含目前伺服器控制項的 Page 或 UserControl 的虛擬目錄。 (繼承來源 Control) |
ToolTip |
取得或設定當滑鼠指標停留在 Web 伺服器控制項時顯示的文字。 (繼承來源 WebControl) |
UniqueID |
取得伺服器控制項唯一的、符合階層架構的識別項。 (繼承來源 Control) |
ValidateRequestMode |
取得或設定值,指出控制項是否對來自瀏覽器的用戶端輸入檢查潛在的危險值。 (繼承來源 Control) |
VerbButtonType |
取得或設定用於表示區域動詞命令的按鈕類型。 (繼承來源 WebZone) |
VerbStyle |
取得使用者介面 (UI) 動詞命令的樣式屬性,該動詞命令與區域中的 Web 組件控制項相關聯。 (繼承來源 WebZone) |
ViewState |
取得狀態資訊的字典,允許您在相同網頁的多個要求之間,儲存和還原伺服器控制項的檢視狀態。 (繼承來源 Control) |
ViewStateIgnoresCase |
取得值,指出 StateBag 物件是否不區分大小寫。 (繼承來源 Control) |
ViewStateMode |
取得或設定這個控制項的檢視狀態模式。 (繼承來源 Control) |
Visible |
取得或設定值,指出伺服器控制項是否要呈現為網頁上的使用者介面 (UI) 項目。 (繼承來源 ToolZone) |
WebPartManager |
取得 WebPartManager 控制項的參考,該控制項與 Web 組件頁面上的 WebZone 控制項執行個體相關聯。 (繼承來源 WebZone) |
Width |
取得或設定 Web 伺服器控制項的寬度。 (繼承來源 WebControl) |
方法
事件
DataBinding |
發生於伺服器控制項繫結至資料來源時。 (繼承來源 Control) |
Disposed |
發生於伺服器控制項從記憶體釋放時,這是在要求 ASP.NET 網頁時,伺服器控制項生命週期的最後階段。 (繼承來源 Control) |
Init |
發生於初始化伺服器控制項時,是其生命週期中的第一個步驟。 (繼承來源 Control) |
Load |
發生於載入伺服器控制項至 Page 物件時。 (繼承來源 Control) |
PreRender |
在 Control 物件載入之後但在呈現之前發生。 (繼承來源 Control) |
Unload |
發生於伺服器控制項從記憶體卸載時。 (繼承來源 Control) |
明確介面實作
擴充方法
FindDataSourceControl(Control) |
傳回與指定之控制項的資料控制項相關聯的資料來源。 |
FindFieldTemplate(Control, String) |
傳回在指定之控制項的命名容器中所指定資料行的欄位樣板。 |
FindMetaTable(Control) |
傳回包含資料控制項的中繼資料表物件。 |
GetDefaultValues(INamingContainer) |
取得所指定資料控制項的預設值集合。 |
GetMetaTable(INamingContainer) |
取得所指定資料控制項中的資料表中繼資料。 |
SetMetaTable(INamingContainer, MetaTable) |
設定所指定資料控制項中的資料表中繼資料。 |
SetMetaTable(INamingContainer, MetaTable, IDictionary<String,Object>) |
設定所指定資料控制項的資料表中繼資料及預設值對應。 |
SetMetaTable(INamingContainer, MetaTable, Object) |
設定所指定資料控制項的資料表中繼資料及預設值對應。 |
TryGetMetaTable(INamingContainer, MetaTable) |
判斷資料表中繼資料是否可供使用。 |
EnableDynamicData(INamingContainer, Type) |
針對指定的資料控制項啟用動態資料行為。 |
EnableDynamicData(INamingContainer, Type, IDictionary<String,Object>) |
針對指定的資料控制項啟用動態資料行為。 |
EnableDynamicData(INamingContainer, Type, Object) |
針對指定的資料控制項啟用動態資料行為。 |