DetailsViewDesigner 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在視覺化設計工具中,為 DetailsView 控制項提供設計階段支援。
public ref class DetailsViewDesigner : System::Web::UI::Design::WebControls::DataBoundControlDesigner
public class DetailsViewDesigner : System.Web.UI.Design.WebControls.DataBoundControlDesigner
type DetailsViewDesigner = class
inherit DataBoundControlDesigner
Public Class DetailsViewDesigner
Inherits DataBoundControlDesigner
- 繼承
範例
下列程式代碼範例示範如何擴充 DetailsViewDesigner 類別,以變更在設計時間衍生自 DetailsView 控件的控件外觀。
此範例會 MyDetailsView
從 DetailsView衍生控件。
MyDetailsView
只是控件的DetailsView複本。 此範例也會從衍生 類別,MyDetailsViewDesigner
並將物件MyDetailsViewDesigner
放在 DesignerAttribute 控件上MyDetailsView
。DetailsViewDesigner
The MyDetailsViewDesigner
會 SampleRowCount 覆寫 屬性,以指定的設計時間檢視 MyDetailsView
的呼叫器數據列包含五個頁面連結。 它會覆寫 PreFilterProperties 方法,使 NamingContainer 屬性在設計時間顯示在 [屬性 ] 方格中。 它會覆寫 GetDesignTimeHtml 方法,使其在設計時間指定為方格中的MyDetailsView
新第一個數據列來包含 Caption 屬性。
BorderStyle如果 的 MyDetailsView
屬性是 NotSet 或 None 值,則會GetDesignTimeHtml在控件周圍繪製藍色虛線框線,使其範圍更可見。
using System;
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 MyDetailsView is a copy of the DetailsView.
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
[Designer(typeof(Examples.CS.WebControls.Design.MyDetailsViewDesigner))]
public class MyDetailsView : DetailsView
{
} // MyDetailsView
// Override members of the DetailsViewDesigner.
[ReflectionPermission(SecurityAction.Demand, Flags=ReflectionPermissionFlag.MemberAccess)]
public class MyDetailsViewDesigner : DetailsViewDesigner
{
// Determines the number of page links in the pager row
// when viewed in the designer.
protected override int SampleRowCount
{
get
{
// Render five page links in the pager row.
return 5;
}
} // SampleRowCount
// Shadow the control properties with design-time properties.
protected override void PreFilterProperties(IDictionary properties)
{
// Call the base method first.
base.PreFilterProperties(properties);
// Make the NamingContainer visible in the Properties grid.
PropertyDescriptor selectProp =
(PropertyDescriptor)properties["NamingContainer"];
properties["NamingContainer"] =
TypeDescriptor.CreateProperty(selectProp.ComponentType,
selectProp, BrowsableAttribute.Yes);
} // PreFilterProperties
// Generate the design-time markup.
const string capTag = "caption";
const string trOpen = "tr><td colspan=2 align=center";
const string trClose = "td></tr";
public override string GetDesignTimeHtml()
{
// Make the full extent of the control more visible in the designer.
// If the border style is None or NotSet, change the border to
// a wide, blue, dashed line. Include the caption within the border.
MyDetailsView myDV = (MyDetailsView)Component;
string markup = null;
int charX;
// Check if the border style should be changed.
if (myDV.BorderStyle == BorderStyle.NotSet ||
myDV.BorderStyle == BorderStyle.None)
{
BorderStyle oldBorderStyle = myDV.BorderStyle;
Unit oldBorderWidth = myDV.BorderWidth;
Color oldBorderColor = myDV.BorderColor;
// Set design-time properties and catch any exceptions.
try
{
myDV.BorderStyle = BorderStyle.Dashed;
myDV.BorderWidth = Unit.Pixel(3);
myDV.BorderColor = Color.Blue;
// Call the base method to generate the markup.
markup = base.GetDesignTimeHtml();
}
catch (Exception ex)
{
markup = GetErrorDesignTimeHtml(ex);
}
finally
{
// Restore the properties to their original settings.
myDV.BorderStyle = oldBorderStyle;
myDV.BorderWidth = oldBorderWidth;
myDV.BorderColor = oldBorderColor;
}
}
else
{
// Call the base method to generate the markup.
markup = base.GetDesignTimeHtml();
}
// Look for a <caption> tag.
if ((charX = markup.IndexOf(capTag)) > 0)
{
// Replace the first caption with
// "tr><td colspan=2 align=center".
markup = markup.Remove(charX,
capTag.Length).Insert(charX, trOpen);
// Replace the second caption with "td></tr".
if ((charX = markup.IndexOf(capTag, charX)) > 0)
markup = markup.Remove(charX,
capTag.Length).Insert(charX, trClose);
}
return markup;
} // GetDesignTimeHtml
} // MyDetailsViewDesigner
} // Examples.CS.WebControls.Design
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 MyDetailsView is a copy of the DetailsView.
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<Designer(GetType(Examples.VB.WebControls.Design.MyDetailsViewDesigner))> _
Public Class MyDetailsView
Inherits DetailsView
End Class
' Override members of the DetailsViewDesigner.
<ReflectionPermission(SecurityAction.Demand, Flags:=ReflectionPermissionFlag.MemberAccess)> _
Public Class MyDetailsViewDesigner
Inherits DetailsViewDesigner
' Determines the number of page links in the pager row
' when viewed in the designer.
Protected Overrides ReadOnly Property SampleRowCount() As Integer
Get
' Render five page links in the pager row.
Return 5
End Get
End Property ' SampleRowCount
' Shadow the control properties with design-time properties.
Protected Overrides Sub PreFilterProperties( _
ByVal properties As IDictionary)
' Call the base method first.
MyBase.PreFilterProperties(properties)
' Make the NamingContainer visible in the Properties grid.
Dim selectProp As PropertyDescriptor = _
CType(properties("NamingContainer"), PropertyDescriptor)
properties("NamingContainer") = _
TypeDescriptor.CreateProperty(selectProp.ComponentType, _
selectProp, BrowsableAttribute.Yes)
End Sub
' Generate the design-time markup.
Private Const capTag As String = "caption"
Private Const trOpen As String = "tr><td colspan=2 align=center"
Private Const trClose As String = "td></tr"
Public Overrides Function GetDesignTimeHtml() As String
' Make the full extent of the control more visible in the designer.
' If the border style is None or NotSet, change the border to
' a wide, blue, dashed line. Include the caption within the border.
Dim myDV As MyDetailsView = CType(Component, MyDetailsView)
Dim markup As String = Nothing
Dim charX As Integer
' Check if the border style should be changed.
If (myDV.BorderStyle = BorderStyle.NotSet Or _
myDV.BorderStyle = BorderStyle.None) Then
Dim oldBorderStyle As BorderStyle = myDV.BorderStyle
Dim oldBorderWidth As Unit = myDV.BorderWidth
Dim oldBorderColor As Color = myDV.BorderColor
' Set design-time properties and catch any exceptions.
Try
myDV.BorderStyle = BorderStyle.Dashed
myDV.BorderWidth = Unit.Pixel(3)
myDV.BorderColor = Color.Blue
' Call the base method to generate the markup.
markup = MyBase.GetDesignTimeHtml()
Catch ex As Exception
markup = GetErrorDesignTimeHtml(ex)
Finally
' Restore the properties to their original settings.
myDV.BorderStyle = oldBorderStyle
myDV.BorderWidth = oldBorderWidth
myDV.BorderColor = oldBorderColor
End Try
Else
' Call the base method to generate the markup.
markup = MyBase.GetDesignTimeHtml()
End If
' Look for a <caption> tag.
charX = markup.IndexOf(capTag)
If charX > 0 Then
' Replace the first caption with
' "tr><td colspan=2 align=center".
markup = markup.Remove(charX, _
capTag.Length).Insert(charX, trOpen)
' Replace the second caption with "td></tr".
charX = markup.IndexOf(capTag, charX)
If charX > 0 Then
markup = markup.Remove(charX, _
capTag.Length).Insert(charX, trClose)
End If
End If
Return markup
End Function ' GetDesignTimeHtml
End Class
End Namespace ' Examples.VB.WebControls.Design
備註
在可視化設計工具中,當您從 [來源] 切換至 [設計] 檢視時,會剖析描述 DetailsView 控件的標記原始程式碼,並在設計介面上建立控件的設計時間版本。 當您切換回 [來源] 檢視時,設計時間控件會保存到標記原始程式碼,並編輯到網頁的標記中。
類別的屬性 DetailsViewDesigner 提供下列功能:
屬性 ActionLists 會傳 DesignerActionListCollection 回 物件,該物件通常包含衍生自 DesignerActionList 設計工具繼承樹狀結構中每個層級之類別的物件。
屬性 AutoFormats 會傳回格式配置集合,以顯示在 [ 自動格式 ] 對話框中。
屬性 TemplateGroups 會傳回相關聯 DetailsView 控件欄位和最上層 DetailsView 範本的範本群組集合。
屬性 UsePreviewControl 一律會傳
true
回 ,表示設計工具會建立相關聯 DetailsView 控件的暫存複本,以產生設計時間標記。
類別 DetailsViewDesigner 方法提供下列功能:
方法會將 DataBind 相關聯的 DetailsView 控件系結至設計時間數據源。
方法 GetDesignTimeHtml 會傳回標記,用來在設計時間呈現相關聯的 DetailsView 。
方法 Initialize 會準備設計工具,以檢視、編輯及設計相關聯的 DetailsView。
OnClick按兩下相關聯DetailsView之設計時間檢視的區域時,會呼叫 方法。
當 OnSchemaRefreshed 相關聯 DetailsView 數據源的架構變更時,會呼叫 方法。
方法 PreFilterProperties 可用來移除或新增其他屬性,或加入相關聯 DetailsView之的陰影屬性。
控件不支援 DetailsView 設計時間可編輯的區域,因此 GetEditableDesignerRegionContent 和 SetEditableDesignerRegionContent 方法沒有功能。
建構函式
DetailsViewDesigner() |
初始化 DetailsViewDesigner 類別的新執行個體。 |
屬性
ActionLists |
取得此設計工具的行動清單集合。 |
AllowResize |
取得值,指出是否可在設計階段環境中調整控制項的大小。 (繼承來源 ControlDesigner) |
AssociatedComponents |
取得元件集合,該集合與設計工具管理的元件相關聯。 (繼承來源 ComponentDesigner) |
AutoFormats |
取得自動格式化配置的集合,以顯示在 [自動格式化] 對話方塊中。 |
Behavior |
已淘汰.
取得或設定與設計工具相關聯的 DHTML 行為。 (繼承來源 HtmlControlDesigner) |
Component |
取得這個設計工具正在設計的元件。 (繼承來源 ComponentDesigner) |
DataBindings |
取得目前控制項的資料繫結 (Data Binding) 集合。 (繼承來源 HtmlControlDesigner) |
DataBindingsEnabled |
取得值,指出關聯控制項的包含區域是否支援資料繫結。 (繼承來源 ControlDesigner) |
DataMember |
取得基礎資料繫結控制項的受遮蔽 DataMember 屬性。 (繼承來源 DataBoundControlDesigner) |
DataSource |
取得或設定關聯控制項的 DataSource 屬性值。 (繼承來源 BaseDataBoundControlDesigner) |
DataSourceDesigner |
取得基礎資料繫結控制項的資料來源設計工具。 (繼承來源 DataBoundControlDesigner) |
DataSourceID |
取得或設定基礎 DataSourceID 物件的 BaseDataBoundControl 屬性值。 (繼承來源 BaseDataBoundControlDesigner) |
DesignerState |
取得物件,用於在設計階段保存關聯控制項的資料。 (繼承來源 ControlDesigner) |
DesignerView |
取得與這個設計工具之資料來源關聯的 DesignerDataSourceView 物件。 (繼承來源 DataBoundControlDesigner) |
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) |
SampleRowCount |
取得要讓關聯控制項顯示的範例資料列數。 |
SetTextualDefaultProperty |
在視覺化設計工具中,為 DetailsView 控制項提供設計階段支援。 (繼承來源 ComponentDesigner) |
ShadowProperties |
取得覆寫使用者設定的屬性值集合。 (繼承來源 ComponentDesigner) |
ShouldCodeSerialize |
已淘汰.
取得或設定值,指出是否應該於序列化 (Serialization) 期間,在程式碼後置 (Code-Behind) 檔案中為目前設計文件建立控制項的欄位宣告。 (繼承來源 HtmlControlDesigner) |
Tag |
取得物件,表示關聯控制項的 HTML 標記項目。 (繼承來源 ControlDesigner) |
TemplateGroups |
取得關聯控制項欄位的範本群組集合。 |
UseDataSourcePickerActionList |
取得值,指出設計工具是否應該在其動作清單中包含「選擇資料來源」。 (繼承來源 DataBoundControlDesigner) |
UsePreviewControl |
取得值,該值指出設計工具是否應該使用暫存複本來產生設計階段標記,而非使用與設計工具相關聯的實際控制項。 |
Verbs |
取得與設計工具相關元件所支援的設計階段動詞命令 (Verb)。 (繼承來源 ComponentDesigner) |
ViewControl |
取得或設定 Web 伺服器控制項,可用於預覽設計階段的 HTML 標記。 (繼承來源 ControlDesigner) |
ViewControlCreated |
取得或設定值,指出是否已建立 |
Visible |
取得值,這個值表示控制項在設計階段是否為可見的。 (繼承來源 ControlDesigner) |