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 控件的外观。
该示例从 HierarchicalDataBoundControl派生MyHierarchicalDataBoundControl
类。 类 MyHierarchicalDataBoundControl
只是 的副本 HierarchicalDataBoundControl。 该示例还从 类派生MyHierarchicalDataBoundControlDesigner
类,HierarchicalDataBoundControlDesigner并在 类上MyHierarchicalDataBoundControl
放置 一MyHierarchicalDataBoundControlDesigner
个 DesignerAttribute 对象。
重写 MyHierarchicalDataBoundControlDesigner
方法, PreFilterProperties 使 NamingContainer 属性在设计时在 “属性” 网格中可见。 如果设计时标记为 null
或 Empty,或者如果设计时标记为空<span>
块,则重写 GetDesignTimeHtml 方法以生成占位符的标记, (也就是说,如果 ...>
和 </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 |
获取当前控件的数据绑定集合。 (继承自 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 |
获取一个特性,该特性指示关联组件的继承类型。 (继承自 ComponentDesigner) |
Inherited |
获取一个值,该值指示是否继承此组件。 (继承自 ComponentDesigner) |
InTemplateMode |
获取一个值,该值指示控件在设计宿主中是否处于模板查看模式或模板编辑模式之一。 InTemplateMode 属性为只读。 (继承自 ControlDesigner) |
IsDirty |
已过时.
获取或设置一个值,该值指示 Web 服务器控件是否已被标记为已更改。 (继承自 ControlDesigner) |
ParentComponent |
获取此设计器的父组件。 (继承自 ComponentDesigner) |
ReadOnly |
已过时.
获取或设置一个值,该值指示控件的属性在设计时是否为只读。 (继承自 ControlDesigner) |
RootDesigner |
获取包含关联控件的 Web 窗体页的控件设计器。 (继承自 ControlDesigner) |
SetTextualDefaultProperty |
在设计器宿主中为 HierarchicalDataBoundControl 控件提供设计时支持。 (继承自 ComponentDesigner) |
ShadowProperties |
获取重写用户设置的属性值的集合。 (继承自 ComponentDesigner) |
ShouldCodeSerialize |
已过时.
获取或设置一个值,该值指示在序列化期间是否应为当前设计文档在代码隐藏文件中创建控件的字段声明。 (继承自 HtmlControlDesigner) |
Tag |
获取表示关联控件的 HTML 标记元素的对象。 (继承自 ControlDesigner) |
TemplateGroups |
获取一个模板组集合,其中每个模板组包含一个或多个模板定义。 (继承自 ControlDesigner) |
UseDataSourcePickerActionList |
获取一个值,该值指示控件是否应呈现其默认操作列表,该操作列表包含一个数据源 ID 下拉列表和相关任务。 |
UsePreviewControl |
获取一个值,该值指示控件设计器是否使用临时预览控件来生成设计时 HTML 标记。 (继承自 ControlDesigner) |
Verbs |
获取与设计器相关联的组件所支持的设计时谓词。 (继承自 ComponentDesigner) |
ViewControl |
获取或设置可用于预览设计时 HTML 标记的 Web 服务器控件。 (继承自 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) |