DynamicControl 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
使用 ASP.NET 动态数据功能,在模板化数据绑定控件中显示为字段定义的内容。
public ref class DynamicControl : System::Web::UI::Control, System::Web::DynamicData::IFieldFormattingOptions, System::Web::DynamicData::IFieldTemplateHost, System::Web::UI::IAttributeAccessor
[System.Drawing.ToolboxBitmap(typeof(System.Web.DynamicData.DynamicControl), "DynamicControl.ico")]
public class DynamicControl : System.Web.UI.Control, System.Web.DynamicData.IFieldFormattingOptions, System.Web.DynamicData.IFieldTemplateHost, System.Web.UI.IAttributeAccessor
[System.Drawing.ToolboxBitmap(typeof(System.Web.DynamicData.DynamicControl), "DynamicControl.bmp")]
public class DynamicControl : System.Web.UI.Control, System.Web.DynamicData.IFieldFormattingOptions, System.Web.DynamicData.IFieldTemplateHost, System.Web.UI.IAttributeAccessor
[<System.Drawing.ToolboxBitmap(typeof(System.Web.DynamicData.DynamicControl), "DynamicControl.ico")>]
type DynamicControl = class
inherit Control
interface IAttributeAccessor
interface IFieldTemplateHost
interface IFieldFormattingOptions
[<System.Drawing.ToolboxBitmap(typeof(System.Web.DynamicData.DynamicControl), "DynamicControl.bmp")>]
type DynamicControl = class
inherit Control
interface IAttributeAccessor
interface IFieldTemplateHost
interface IFieldFormattingOptions
Public Class DynamicControl
Inherits Control
Implements IAttributeAccessor, IFieldFormattingOptions, IFieldTemplateHost
- 继承
- 属性
- 实现
示例
请参阅此功能的运行时代码示例: 运行。
下面的示例演示如何使用 DynamicControl 控件中的 ListView 控件显示、插入、删除和编辑数据库表中的值。 请务必注意,为了使插入操作正常工作,IsDbGenerated和 列的 rowguid
属性设置为 true
ModifiedDate
。
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Init(object sender, EventArgs e)
{
DynamicDataManager1.RegisterControl(ListView1);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>DynamicControl Sample</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DynamicDataManager ID="DynamicDataManager1" runat="server"
AutoLoadForeignKeys="true" />
<asp:ValidationSummary ID="InsertValidationSummary" runat="server" EnableClientScript="true"
HeaderText="List of validation errors" ValidationGroup="Insert" />
<asp:DynamicValidator runat="server" ID="InsertValidator"
ControlToValidate="ListView1" ValidationGroup="Insert" Display="None" />
<asp:ValidationSummary ID="EditValidationSummary" runat="server" EnableClientScript="true"
HeaderText="List of validation errors" ValidationGroup="Edit" />
<asp:DynamicValidator runat="server" ID="EditValidator"
ControlToValidate="ListView1" ValidationGroup="Edit" Display="None" />
<asp:ListView ID="ListView1" runat="server" DataSourceID="LinqDataSource1"
InsertItemPosition="LastItem">
<LayoutTemplate>
<table cellpadding="2" border="1" runat="server" id="tblCustomers">
<tr runat="server">
<th runat="server"> </th>
<th runat="server">Name</th>
<th runat="server">Number</th>
<th runat="server">Standard Cost</th>
<th runat="server">List Price</th>
<th runat="server">Sell Start Date</th>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
<asp:DataPager runat="server" ID="CustomersPager" PageSize="20">
<Fields>
<asp:NumericPagerField ButtonCount="10" />
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:LinkButton ID="EditButton" runat="server" CommandName="Edit"
Text="Edit" CausesValidation="false" />
<asp:LinkButton ID="DeleteButton" runat="server" CommandName="Delete"
Text="Delete" CausesValidation="false"
OnClientClick='return confirm("Are you sure you want to delete this item?");' />
</td>
<td>
<asp:DynamicControl runat="server" DataField="Name" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ProductNumber" />
</td>
<td align="right">
<asp:DynamicControl runat="server" DataField="StandardCost" DataFormatString="{0:C}" />
</td>
<td align="right">
<asp:DynamicControl runat="server" DataField="ListPrice" DataFormatString="{0:C}" />
</td>
<td align="center">
<asp:DynamicControl runat="server" DataField="SellStartDate"
DataFormatString="{0:MM/dd/yyyy}" NullDisplayText=" " />
</td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td>
<asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update"
Text="Update" ValidationGroup="Edit" />
<asp:LinkButton ID="CancelButton" runat="server" CommandName="Cancel"
Text="Cancel" CausesValidation="false" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="Name" Mode="Edit" ValidationGroup="Edit" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ProductNumber" Mode="Edit" ValidationGroup="Edit" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="StandardCost" Mode="Edit" ValidationGroup="Edit" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ListPrice" Mode="Edit" ValidationGroup="Edit" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="SellStartDate" Mode="Edit"
ValidationGroup="Edit" DataFormatString="{0:MM/dd/yyyy}" ApplyFormatInEditMode="true" />
</td>
</tr>
</EditItemTemplate>
<InsertItemTemplate>
<tr>
<td>
<asp:LinkButton ID="InsertButton" runat="server" CommandName="Insert"
Text="Insert" ValidationGroup="Insert" />
<asp:LinkButton ID="CancelButton" runat="server" CommandName="Cancel"
Text="Cancel" CausesValidation="false" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="Name" Mode="Insert" ValidationGroup="Insert" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ProductNumber" Mode="Insert" ValidationGroup="Insert" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="StandardCost" Mode="Insert" ValidationGroup="Insert" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ListPrice" Mode="Insert" ValidationGroup="Insert" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="SellStartDate" Mode="Insert" ValidationGroup="Insert" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the AdventureWorksLT sample database. -->
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
TableName="Products"
ContextTypeName="AdventureWorksLTDataContext"
EnableUpdate="true"
EnableDelete="true"
EnableInsert="true" >
</asp:LinqDataSource>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs)
DynamicDataManager1.RegisterControl(ListView1)
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>DynamicControl Sample</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DynamicDataManager ID="DynamicDataManager1" runat="server"
AutoLoadForeignKeys="true" />
<asp:ValidationSummary ID="InsertValidationSummary" runat="server" EnableClientScript="true"
HeaderText="List of validation errors" ValidationGroup="Insert" />
<asp:DynamicValidator runat="server" ID="InsertValidator"
ControlToValidate="ListView1" ValidationGroup="Insert" Display="None" />
<asp:ValidationSummary ID="EditValidationSummary" runat="server" EnableClientScript="true"
HeaderText="List of validation errors" ValidationGroup="Edit" />
<asp:DynamicValidator runat="server" ID="EditValidator"
ControlToValidate="ListView1" ValidationGroup="Edit" Display="None" />
<asp:ListView ID="ListView1" runat="server" DataSourceID="LinqDataSource1"
InsertItemPosition="LastItem">
<LayoutTemplate>
<table cellpadding="2" border="1" runat="server" id="tblCustomers">
<tr runat="server">
<th runat="server"> </th>
<th runat="server">Name</th>
<th runat="server">Number</th>
<th runat="server">Standard Cost</th>
<th runat="server">List Price</th>
<th runat="server">Sell Start Date</th>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
<asp:DataPager runat="server" ID="CustomersPager" PageSize="20">
<Fields>
<asp:NumericPagerField ButtonCount="10" />
</Fields>
</asp:DataPager>
</LayoutTemplate>
<ItemTemplate>
<tr runat="server">
<td>
<asp:LinkButton ID="EditButton" runat="server" CommandName="Edit"
Text="Edit" CausesValidation="false" />
<asp:LinkButton ID="DeleteButton" runat="server" CommandName="Delete"
Text="Delete" CausesValidation="false"
OnClientClick='return confirm("Are you sure you want to delete this item?");' />
</td>
<td>
<asp:DynamicControl runat="server" DataField="Name" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ProductNumber" />
</td>
<td align="right">
<asp:DynamicControl runat="server" DataField="StandardCost" DataFormatString="{0:C}" />
</td>
<td align="right">
<asp:DynamicControl runat="server" DataField="ListPrice" DataFormatString="{0:C}" />
</td>
<td align="center">
<asp:DynamicControl runat="server" DataField="SellStartDate"
DataFormatString="{0:MM/dd/yyyy}" NullDisplayText=" " />
</td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td>
<asp:LinkButton ID="UpdateButton" runat="server" CommandName="Update"
Text="Update" ValidationGroup="Edit" />
<asp:LinkButton ID="CancelButton" runat="server" CommandName="Cancel"
Text="Cancel" CausesValidation="false" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="Name" Mode="Edit" ValidationGroup="Edit" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ProductNumber" Mode="Edit" ValidationGroup="Edit" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="StandardCost" Mode="Edit" ValidationGroup="Edit" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ListPrice" Mode="Edit" ValidationGroup="Edit" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="SellStartDate" Mode="Edit"
ValidationGroup="Edit" DataFormatString="{0:MM/dd/yyyy}" ApplyFormatInEditMode="true" />
</td>
</tr>
</EditItemTemplate>
<InsertItemTemplate>
<tr>
<td>
<asp:LinkButton ID="InsertButton" runat="server" CommandName="Insert"
Text="Insert" ValidationGroup="Insert" />
<asp:LinkButton ID="CancelButton" runat="server" CommandName="Cancel"
Text="Cancel" CausesValidation="false" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="Name" Mode="Insert" ValidationGroup="Insert" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ProductNumber" Mode="Insert" ValidationGroup="Insert" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="StandardCost" Mode="Insert" ValidationGroup="Insert" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="ListPrice" Mode="Insert" ValidationGroup="Insert" />
</td>
<td>
<asp:DynamicControl runat="server" DataField="SellStartDate" Mode="Insert" ValidationGroup="Insert" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the AdventureWorksLT sample database. -->
<asp:LinqDataSource ID="LinqDataSource1" runat="server"
TableName="Products"
ContextTypeName="AdventureWorksLTDataContext"
EnableUpdate="true"
EnableDelete="true"
EnableInsert="true" >
</asp:LinqDataSource>
</div>
</form>
</body>
</html>
注解
本主题内容:
介绍
控件 DynamicControl 由模板化的数据绑定控件(如 FormView 或 ListView)用于显示自定义页面中使用 ASP.NET 动态数据功能的数据字段。 还可以在 TemplateField 或 DetailsView 控件的GridView字段中使用 DynamicControl 控件。
控件 DynamicControl 提供的功能类似于 字段的功能 DynamicField 。 但是,由于 DynamicControl 控件仅在模板内使用,因此可以更灵活地控制数据的显示方式,因为可以在字段周围添加其他 HTML 元素。 使用 DynamicControl 控件时,可以利用以下动态数据功能:
根据数据类型,使用字段模板自动呈现字段的正确控件。 可以为整个应用程序全局修改字段模板。
提供基于数据库架构的内置数据验证。 还可以通过自定义数据模型来添加验证类型。
通过使用数据模型中的属性或使用 属性自定义单个字段的数据 UIHint 呈现。
若要指定要在控件中显示的 DynamicControl 字段,请将 DataField 属性设置为字段名称。 可以通过设置 DataFormatString 属性将自定义格式字符串应用于字段值。 默认情况下,仅当数据绑定控件处于只读模式时,格式设置字符串才应用于字段值。 若要将格式字符串应用于数据绑定控件处于编辑模式时显示的值,请将 ApplyFormatInEditMode 属性设置为 true
。 如果字段值为 null
,则可以通过设置 NullDisplayText 属性来显示自定义描述文字。 控件 DynamicControl 还可以通过将 属性设置为 ConvertEmptyStringToNull ,自动将空字符串 (“”) 字段值转换为 true
null 值。
控件 DynamicControl 支持不同的显示模式。 若要指定显示控件的 DynamicControl 模式,请 Mode 设置 属性。 下表显示了不同的模式。
ReadOnly 用于显示模式。 这会阻止用户修改记录或数据字段的值。 它可以在任何模板中使用。
Edit 用于编辑模式。 这使用户能够更新现有记录的值。 它用于编辑模板 (通常命名 EditItemTemplate
为) 。
Insert 用于插入模式。 这使用户能够输入新记录的值。 它用于插入模板 (通常命名 InsertItemTemplate
为) 。
可以通过将 属性设置为 Visiblefalse
来隐藏DynamicControl数据绑定控件中的控件。
声明性语法
<asp:DynamicControl
ApplyFormatInEditMode="True|False"
ConvertEmptyStringToNull="True|False"
CssClass="string"
DataField="string"
DataFormatString="string"
EnableViewState="True|False"
HtmlEncode="True|False"
ID="string"
Mode="Edit|Insert|ReadOnly"
NullDisplayText="string"
OnDataBinding="DataBinding event handler"
OnDisposed="Disposed event handler"
OnInit="Init event handler"
OnLoad="Load event handler"
OnPreRender="PreRender event handler"
OnUnload="Unload event handler"
runat="server"
UIHint="string"
ValidationGroup="string"
Visible="True|False"
>
</asp:DynamicControl>
构造函数
DynamicControl() |
初始化 DynamicControl 类的新实例。 |
DynamicControl(DataBoundControlMode) |
用指定的模式初始化 DynamicControl 类的新实例。 |
属性
Adapter |
获取控件的浏览器特定适配器。 (继承自 Control) |
ApplyFormatInEditMode |
获取或设置一个值,该值指示字段处于编辑模式时,是否将 DataFormatString 属性指定的格式设置字符串应用于字段值。 |
AppRelativeTemplateSourceDirectory |
获取或设置包含该控件的 Page 或 UserControl 对象的应用程序相对虚拟目录。 (继承自 Control) |
BindingContainer |
获取包含该控件的数据绑定的控件。 (继承自 Control) |
ChildControlsCreated |
获取一个值,该值指示是否已创建服务器控件的子控件。 (继承自 Control) |
ClientID |
获取由 ASP.NET 生成的 HTML 标记的控件 ID。 (继承自 Control) |
ClientIDMode |
获取或设置用于生成 ClientID 属性值的算法。 (继承自 Control) |
ClientIDSeparator |
获取一个字符值,该值表示 ClientID 属性中使用的分隔符字符。 (继承自 Control) |
Column |
获取或设置与控件关联的列对象。 |
Context |
为当前 Web 请求获取与服务器控件关联的 HttpContext 对象。 (继承自 Control) |
Controls |
获取 ControlCollection 对象,该对象表示 UI 层次结构中的指定服务器控件的子控件。 (继承自 Control) |
ConvertEmptyStringToNull |
获取或设置一个值,该值指示在数据源中更新数据字段时是否将空字符串值 ("") 自动转换为 null 值。 |
CssClass |
获取或设置级联样式表 (CSS) 类,该类指定 DynamicControl 控件内容的显示样式。 |
DataField |
获取或设置 DynamicControl 控件绑定到的数据字段的名称。 |
DataFormatString |
获取或设置一个字符串,该字符串指定字段值的显示格式。 |
DataItemContainer |
如果命名容器实现 IDataItemContainer,则获取对命名容器的引用。 (继承自 Control) |
DataKeysContainer |
如果命名容器实现 IDataKeysControl,则获取对命名容器的引用。 (继承自 Control) |
DesignMode |
获取一个值,该值指示是否正在使用设计图面上的一个控件。 (继承自 Control) |
EnableTheming |
获取或设置一个值,该值指示主题是否应用于该控件。 (继承自 Control) |
EnableViewState |
获取或设置一个值,该值指示服务器控件是否向发出请求的客户端保持自己的视图状态以及它所包含的任何子控件的视图状态。 (继承自 Control) |
Events |
获取控件的事件处理程序委托列表。 此属性为只读。 (继承自 Control) |
FieldTemplate |
获取为 DynamicControl 控件创建的字段模板。 |
HasChildViewState |
获取一个值,该值指示当前服务器控件的子控件是否具有任何已保存的视图状态设置。 (继承自 Control) |
HtmlEncode |
获取或设置一个值,该值指示控件的数据在呈现之前是否经过 HTML 编码。 |
ID |
获取或设置分配给服务器控件的编程标识符。 (继承自 Control) |
IdSeparator |
获取用于分隔控件标识符的字符。 (继承自 Control) |
IsChildControlStateCleared |
获取一个值,该值指示该控件中包含的控件是否具有控件状态。 (继承自 Control) |
IsTrackingViewState |
获取一个值,用于指示服务器控件是否会将更改保存到其视图状态中。 (继承自 Control) |
IsViewStateEnabled |
获取一个值,该值指示是否为该控件启用了视图状态。 (继承自 Control) |
LoadViewStateByID |
获取一个值,该值指示控件是否通过 ID 而不是索引参与加载其视图状态。 (继承自 Control) |
Mode |
获取或设置呈现模式。 |
NamingContainer |
获取对服务器控件的命名容器的引用,此引用创建唯一的命名空间,以区分具有相同 ID 属性值的服务器控件。 (继承自 Control) |
NullDisplayText |
获取或设置当字段值为 |
Page |
获取对包含服务器控件的 Page 实例的引用。 (继承自 Control) |
Parent |
获取对页 UI 层次结构中服务器控件的父控件的引用。 (继承自 Control) |
RenderingCompatibility |
获取一个值,该值指定呈现的 HTML 将与之兼容的 ASP.NET 版本。 (继承自 Control) |
Site |
获取容器信息,该容器在呈现于设计图面上时承载当前控件。 (继承自 Control) |
SkinID |
获取或设置要应用于控件的外观。 (继承自 Control) |
Table |
获取与控件关联的表对象。 |
TemplateControl |
获取或设置对包含该控件的模板的引用。 (继承自 Control) |
TemplateSourceDirectory |
获取包含当前服务器控件的 Page 或 UserControl 的虚拟目录。 (继承自 Control) |
UIHint |
获取或设置用于呈现数据字段的字段模板的名称。 |
UniqueID |
获取服务器控件的唯一的、以分层形式限定的标识符。 (继承自 Control) |
ValidateRequestMode |
获取或设置指示控件是否检查来自浏览器的客户端输入是否具有潜在危险值的值。 (继承自 Control) |
ValidationGroup |
获取或设置控件的验证组名称。 |
ViewState |
获取状态信息的字典,这些信息使您可以在同一页的多个请求间保存和还原服务器控件的视图状态。 (继承自 Control) |
ViewStateIgnoresCase |
获取一个值,该值指示 StateBag 对象是否不区分大小写。 (继承自 Control) |
ViewStateMode |
获取或设置此控件的视图状态模式。 (继承自 Control) |
Visible |
获取或设置一个值,该值指示服务器控件是否作为 UI 呈现在页上。 (继承自 Control) |
方法
事件
DataBinding |
当服务器控件绑定到数据源时发生。 (继承自 Control) |
Disposed |
当从内存释放服务器控件时发生,这是请求 ASP.NET 页时服务器控件生存期的最后阶段。 (继承自 Control) |
Init |
当服务器控件初始化时发生;初始化是控件生存期的第一步。 (继承自 Control) |
Load |
当服务器控件加载到 Page 对象中时发生。 (继承自 Control) |
PreRender |
在加载 Control 对象之后、呈现之前发生。 (继承自 Control) |
Unload |
当服务器控件从内存中卸载时发生。 (继承自 Control) |
显式接口实现
IControlBuilderAccessor.ControlBuilder |
有关此成员的说明,请参见 ControlBuilder。 (继承自 Control) |
IControlDesignerAccessor.GetDesignModeState() |
有关此成员的说明,请参见 GetDesignModeState()。 (继承自 Control) |
IControlDesignerAccessor.SetDesignModeState(IDictionary) |
有关此成员的说明,请参见 SetDesignModeState(IDictionary)。 (继承自 Control) |
IControlDesignerAccessor.SetOwnerControl(Control) |
有关此成员的说明,请参见 SetOwnerControl(Control)。 (继承自 Control) |
IControlDesignerAccessor.UserData |
有关此成员的说明,请参见 UserData。 (继承自 Control) |
IDataBindingsAccessor.DataBindings |
有关此成员的说明,请参见 DataBindings。 (继承自 Control) |
IDataBindingsAccessor.HasDataBindings |
有关此成员的说明,请参见 HasDataBindings。 (继承自 Control) |
IExpressionsAccessor.Expressions |
有关此成员的说明,请参见 Expressions。 (继承自 Control) |
IExpressionsAccessor.HasExpressions |
有关此成员的说明,请参见 HasExpressions。 (继承自 Control) |
IFieldTemplateHost.FormattingOptions |
有关此成员的说明,请参见 FormattingOptions。 |
IParserAccessor.AddParsedSubObject(Object) |
有关此成员的说明,请参见 AddParsedSubObject(Object)。 (继承自 Control) |
扩展方法
ConvertEditedValue(IFieldFormattingOptions, String) |
返回用户为正在验证的控件提供的值。 |
FindDataSourceControl(Control) |
返回与指定控件的数据控件关联的数据源。 |
FindFieldTemplate(Control, String) |
返回指定控件的命名容器中指定列的字段模板。 |
FindMetaTable(Control) |
返回包含数据控件的元表对象。 |
FormatEditValue(IFieldFormattingOptions, Object) |
使用指定格式设置选项设置指定字段值的格式。 |
FormatValue(IFieldFormattingOptions, Object) |
使用指定格式设置选项设置指定字段值的格式。 |