HierarchicalDataBoundControlDesigner 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在設計工具主機中,為 HierarchicalDataBoundControl 控制項提供設計階段支援。
public ref class HierarchicalDataBoundControlDesigner : System::Web::UI::Design::WebControls::BaseDataBoundControlDesigner
public class HierarchicalDataBoundControlDesigner : System.Web.UI.Design.WebControls.BaseDataBoundControlDesigner
type HierarchicalDataBoundControlDesigner = class
inherit BaseDataBoundControlDesigner
Public Class HierarchicalDataBoundControlDesigner
Inherits BaseDataBoundControlDesigner
- 繼承
-
HierarchicalDataBoundControlDesigner
- 衍生
範例
下列程式代碼範例示範如何擴充 HierarchicalDataBoundControlDesigner 類別,以變更在設計時間衍生自 HierarchicalDataBoundControl 控件的控件外觀。
此範例會 MyHierarchicalDataBoundControl
從 HierarchicalDataBoundControl衍生類別。 類別 MyHierarchicalDataBoundControl
只是的 HierarchicalDataBoundControl複本。 此範例也會從 類別衍生 MyHierarchicalDataBoundControlDesigner
類別,HierarchicalDataBoundControlDesigner並將的物件MyHierarchicalDataBoundControlDesigner
放在 DesignerAttribute 類別上MyHierarchicalDataBoundControl
。
會 MyHierarchicalDataBoundControlDesigner
覆寫 PreFilterProperties 方法,讓 NamingContainer 屬性在設計時間顯示在 [屬性 ] 方格中。 它會覆寫 GetDesignTimeHtml 方法,以在設計時間標記為 null
或 Empty時產生佔位符的標記,或者如果設計時間標記是空<span>
的區塊, (也就是說,如果 ...>
與</span>
標記之間<span
沒有內部標記,則為) 。
using System;
using System.IO;
using System.Web;
using System.Drawing;
using System.Web.UI.WebControls;
using System.Web.UI.Design.WebControls;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
namespace Examples.CS.WebControls.Design
{
// The MyHierarchicalDataBoundControl is a copy of the
// HierarchicalDataBoundControl.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
[Designer(typeof(Examples.CS.WebControls.Design.
MyHierarchicalDataBoundControlDesigner))]
public class MyHierarchicalDataBoundControl :
HierarchicalDataBoundControl
{
} // MyHierarchicalDataBoundControl
// Override members of the ierarchicalDataBoundControlDesigner.
[ReflectionPermission(SecurityAction.Demand, Flags=ReflectionPermissionFlag.MemberAccess)]
public class MyHierarchicalDataBoundControlDesigner :
HierarchicalDataBoundControlDesigner
{
const string bracketClose = ">";
const string spanOpen = "<SPAN";
const string spanClose = "</SPAN>";
// Return the markup for a placeholder, if the inner markup is empty.
// For brevity, the code that is used to detect embedded white_space
// in the tags is not shown.
public override string GetDesignTimeHtml()
{
// Get the design-time markup from the base method.
string markup = base.GetDesignTimeHtml();
// If the markup is null or empty, return the markup
// for the placeholder.
if(string.IsNullOrEmpty(markup))
return GetEmptyDesignTimeHtml();
// Make the markup uniform case so that the IndexOf will work.
string MARKUP = markup.ToUpper();
int charX;
// Look for a <span ...> tag.
if ((charX = MARKUP.IndexOf(spanOpen)) >= 0)
{
// Find closing bracket of span open tag.
if ((charX = MARKUP.IndexOf(bracketClose,
charX+spanOpen.Length)) >= 0)
{
// If the inner markup of <span ...></span> is empty,
// return the markup for a placeholder.
if (string.Compare(MARKUP, charX + 1, spanClose, 0,
spanClose.Length) == 0)
return GetEmptyDesignTimeHtml();
}
}
// Return the original markup, if the inner markup is not empty.
return markup;
}
// Shadow the control properties with design-time properties.
protected override void PreFilterProperties(IDictionary properties)
{
string namingContainer = "NamingContainer";
// Call the base method first.
base.PreFilterProperties(properties);
// Make the NamingContainery visible in the Properties grid.
PropertyDescriptor selectProp =
(PropertyDescriptor)properties[namingContainer];
properties[namingContainer] =
TypeDescriptor.CreateProperty(selectProp.ComponentType,
selectProp, BrowsableAttribute.Yes);
} // PreFilterProperties
} // MyHierarchicalDataBoundControlDesigner
} // Examples.CS.WebControls.Design
Imports System.IO
Imports System.Web
Imports System.Drawing
Imports System.Web.UI.WebControls
Imports System.Web.UI.Design.WebControls
Imports System.Collections
Imports System.ComponentModel
Imports System.Security.Permissions
Namespace Examples.VB.WebControls.Design
' The MyHierarchicalDataBoundControl is a copy of the
' HierarchicalDataBoundControl.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<Designer(GetType(Examples.VB.WebControls.Design. _
MyHierarchicalDataBoundControlDesigner))> _
Public Class MyHierarchicalDataBoundControl
Inherits HierarchicalDataBoundControl
End Class
' Override members of the HierarchicalDataBoundControlDesigner.
<ReflectionPermission(SecurityAction.Demand, Flags:=ReflectionPermissionFlag.MemberAccess)> _
Public Class MyHierarchicalDataBoundControlDesigner
Inherits HierarchicalDataBoundControlDesigner
Private Const bracketClose As String = ">"
Private Const spanOpen As String = "<SPAN"
Private Const spanClose As String = "</SPAN>"
' Return the markup for a placeholder, if the inner markup is empty.
' For brevity, the code that is used to detect embedded white_space
' in the tags is not shown.
Public Overrides Function GetDesignTimeHtml() As String
' Get the design-time markup from the base method.
Dim markup As String = MyBase.GetDesignTimeHtml()
' If the markup is null or empty, return the markup
' for the placeholder.
If String.IsNullOrEmpty(markup) Then
Return GetEmptyDesignTimeHtml()
End If
' Make the markup uniform case so that the IndexOf will work.
Dim markupUC As String = markup.ToUpper()
Dim charX As Integer
' Look for a <span ...> tag.
charX = markupUC.IndexOf(spanOpen)
If charX >= 0 Then
' Find closing bracket of span open tag.
charX = markupUC.IndexOf(bracketClose, charX + spanOpen.Length)
If charX >= 0 Then
' If the inner markup of <span ...></span> is empty,
' return the markup for a placeholder.
If String.Compare(markupUC, charX + 1, _
spanClose, 0, spanClose.Length) = 0 Then
Return GetEmptyDesignTimeHtml()
End If
End If
End If
' Return the original markup, if the inner markup is not empty.
Return markup
End Function ' GetDesignTimeHtml
' Shadow the control properties with design-time properties.
Protected Overrides Sub PreFilterProperties( _
ByVal properties As IDictionary)
Dim namingContainer As String = "NamingContainer"
' Call the base method first.
MyBase.PreFilterProperties(properties)
' Make the NamingContainery visible in the Properties grid.
Dim selectProp As PropertyDescriptor = _
CType(properties(namingContainer), PropertyDescriptor)
properties(namingContainer) = _
TypeDescriptor.CreateProperty(selectProp.ComponentType, _
selectProp, BrowsableAttribute.Yes)
End Sub
End Class
End Namespace ' Examples.VB.WebControls.Design
備註
在設計工具主應用程式中,當使用者從 [來源] 切換至 [設計] 檢視時,會剖析描述衍生自抽象類之控件的 HierarchicalDataBoundControl 標記原始程式碼,並在設計介面上建立控件的設計時間版本。 當使用者切換回 [來源] 檢視時,設計時間控件會保存到標記原始程式碼,並編輯成網頁的標記。 類別 HierarchicalDataBoundControlDesigner 提供設計時間支援,以支援衍生自設計工具主應用程式中的 HierarchicalDataBoundControl 控件。
類別 HierarchicalDataBoundControlDesigner 屬性提供下列功能:
屬性會 ActionLists 傳 DesignerActionListCollection 回 物件,該物件通常包含衍生自 DesignerActionList 設計工具繼承樹狀結構中每個層級之類別的物件。
如果已定義數據源,屬性 DataSourceDesigner 會提供數據源設計工具的存取權。
屬性 DesignerView 會取得系結至相關聯控件之數據源的預設檢視。
屬性 UseDataSourcePickerActionList 會決定控件是否應該轉譯其默認動作清單,以選擇和建立數據源。
類別 HierarchicalDataBoundControlDesigner 方法提供下列功能:
方法 ConnectToDataSource 會執行連接到目前數據源所需的動作。
方法 CreateDataSource 會建立相關聯控件的新數據源。
方法 DataBind 會將衍生自 類別的 HierarchicalDataBoundControl 關聯控件系結至設計時間數據源。
方法 DisconnectFromDataSource 會執行與目前數據源中斷連線所需的動作。
方法 GetDesignTimeDataSource 會取得可在設計時間用於相關聯控件的數據源。
方法 GetSampleDataSource 會建構可在設計時間用於相關聯控件的範例數據源。
方法 PreFilterProperties 可用來從 中移除屬性,或將其他屬性加入至或加入至衍生自 HierarchicalDataBoundControl 類別之相關聯控件的陰影屬性。
建構函式
HierarchicalDataBoundControlDesigner() |
初始化 HierarchicalDataBoundControlDesigner 類別的新執行個體。 |
屬性
ActionLists |
取得此設計工具的行動清單集合。 |
AllowResize |
取得值,指出是否可在設計階段環境中調整控制項的大小。 (繼承來源 ControlDesigner) |
AssociatedComponents |
取得元件集合,該集合與設計工具管理的元件相關聯。 (繼承來源 ComponentDesigner) |
AutoFormats |
針對設計階段的相關聯控制項,取得要在 [自動格式化] 對話方塊中顯示之預先定義的自動格式化配置集合。 (繼承來源 ControlDesigner) |
Behavior |
已淘汰.
取得或設定與設計工具相關聯的 DHTML 行為。 (繼承來源 HtmlControlDesigner) |
Component |
取得這個設計工具正在設計的元件。 (繼承來源 ComponentDesigner) |
DataBindings |
取得目前控制項的資料繫結 (Data Binding) 集合。 (繼承來源 HtmlControlDesigner) |
DataBindingsEnabled |
取得值,指出關聯控制項的包含區域是否支援資料繫結。 (繼承來源 ControlDesigner) |
DataSource |
取得或設定關聯控制項的 DataSource 屬性值。 (繼承來源 BaseDataBoundControlDesigner) |
DataSourceDesigner |
在選取資料來源進行資料繫結時,提供對資料來源設計工具的存取。 |
DataSourceID |
取得或設定基礎 DataSourceID 物件的 BaseDataBoundControl 屬性值。 (繼承來源 BaseDataBoundControlDesigner) |
DesignerState |
取得物件,用於在設計階段保存關聯控制項的資料。 (繼承來源 ControlDesigner) |
DesignerView |
取得繫結至關聯控制項的資料來源之預設檢視。 |
DesignTimeElement |
已淘汰.
取得設計階段物件,表示與設計介面上 HtmlControlDesigner 物件相關聯的控制項。 (繼承來源 HtmlControlDesigner) |
DesignTimeElementView |
已淘汰.
取得控制項設計工具的檢視控制項物件。 (繼承來源 ControlDesigner) |
DesignTimeHtmlRequiresLoadComplete |
已淘汰.
取得值,指出設計主應用程式在呼叫 GetDesignTimeHtml 方法之前是否必須完成載入。 (繼承來源 ControlDesigner) |
Expressions |
在設計階段取得目前控制項的運算式繫結。 (繼承來源 HtmlControlDesigner) |
HidePropertiesInTemplateMode |
取得值,指示當控制項處於樣板模式時,關聯控制項的屬性是否會隱藏。 (繼承來源 ControlDesigner) |
ID |
取得或設定控制項的 ID 字串。 (繼承來源 ControlDesigner) |
InheritanceAttribute |
取得屬性 (Attribute),表示相關元件的繼承 (Inheritance) 型別。 (繼承來源 ComponentDesigner) |
Inherited |
取得值,表示是否要繼承這個元件。 (繼承來源 ComponentDesigner) |
InTemplateMode |
取得值,指出控制項在設計主應用程式中處於樣板檢視模式還是編輯模式。 InTemplateMode 屬性是唯讀的。 (繼承來源 ControlDesigner) |
IsDirty |
已淘汰.
取得或設定值,指出 Web 伺服器控制項是否已標記為變更。 (繼承來源 ControlDesigner) |
ParentComponent |
取得這個設計工具的父元件。 (繼承來源 ComponentDesigner) |
ReadOnly |
已淘汰.
取得或設定值,指出控制項屬性於設計階段是否為唯讀。 (繼承來源 ControlDesigner) |
RootDesigner |
為包含關聯控制項的 Web Form 網頁,取得控制項設計工具。 (繼承來源 ControlDesigner) |
SetTextualDefaultProperty |
在設計工具主機中,為 HierarchicalDataBoundControl 控制項提供設計階段支援。 (繼承來源 ComponentDesigner) |
ShadowProperties |
取得覆寫使用者設定的屬性值集合。 (繼承來源 ComponentDesigner) |
ShouldCodeSerialize |
已淘汰.
取得或設定值,指出是否應該於序列化 (Serialization) 期間,在程式碼後置 (Code-Behind) 檔案中為目前設計文件建立控制項的欄位宣告。 (繼承來源 HtmlControlDesigner) |
Tag |
取得物件,表示關聯控制項的 HTML 標記項目。 (繼承來源 ControlDesigner) |
TemplateGroups |
取得範本群組集合,各範本群組包含一個或多個範本定義。 (繼承來源 ControlDesigner) |
UseDataSourcePickerActionList |
取得值,表示控制項是否應該呈現其預設動作清單,其中包含資料來源 ID 下拉式清單和相關的工作。 |
UsePreviewControl |
取得值,其中該值會表示控制項設計工具是否使用暫時預覽控制項以產生設計階段 HTML 標記。 (繼承來源 ControlDesigner) |
Verbs |
取得與設計工具相關元件所支援的設計階段動詞命令 (Verb)。 (繼承來源 ComponentDesigner) |
ViewControl |
取得或設定 Web 伺服器控制項,可用於預覽設計階段的 HTML 標記。 (繼承來源 ControlDesigner) |
ViewControlCreated |
取得或設定值,指出是否已建立 |
Visible |
取得值,這個值表示控制項在設計階段是否為可見的。 (繼承來源 ControlDesigner) |
方法
明確介面實作
IDesignerFilter.PostFilterAttributes(IDictionary) |
如需這個成員的描述,請參閱 PostFilterAttributes(IDictionary) 方法。 (繼承來源 ComponentDesigner) |
IDesignerFilter.PostFilterEvents(IDictionary) |
如需這個成員的描述,請參閱 PostFilterEvents(IDictionary) 方法。 (繼承來源 ComponentDesigner) |
IDesignerFilter.PostFilterProperties(IDictionary) |
如需這個成員的描述,請參閱 PostFilterProperties(IDictionary) 方法。 (繼承來源 ComponentDesigner) |
IDesignerFilter.PreFilterAttributes(IDictionary) |
如需這個成員的描述,請參閱 PreFilterAttributes(IDictionary) 方法。 (繼承來源 ComponentDesigner) |
IDesignerFilter.PreFilterEvents(IDictionary) |
如需這個成員的描述,請參閱 PreFilterEvents(IDictionary) 方法。 (繼承來源 ComponentDesigner) |
IDesignerFilter.PreFilterProperties(IDictionary) |
如需這個成員的描述,請參閱 PreFilterProperties(IDictionary) 方法。 (繼承來源 ComponentDesigner) |
ITreeDesigner.Children |
如需這個成員的描述,請參閱 Children 屬性。 (繼承來源 ComponentDesigner) |
ITreeDesigner.Parent |
如需這個成員的描述,請參閱 Parent 屬性。 (繼承來源 ComponentDesigner) |