DynamicControl 웹 서버 컨트롤 선언 구문
업데이트: 2007년 11월
DynamicControl 컨트롤은 ASP.NET Dynamic Data 프레임워크의 일부입니다. 이 컨트롤은 필드 템플릿과 같은 Dynamic Data 기능을 사용하여 지정된 필드의 내용을 FormView 또는 ListView 컨트롤과 같은 템플릿 기반의 데이터 바인딩된 컨트롤에 표시합니다.
<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 컨트롤은 FormView 또는 ListView 컨트롤과 같은 템플릿 기반의 데이터 바인딩된 컨트롤에서 ASP.NET Dynamic Data 기능을 사용하는 데이터 필드를 표시하는 데 사용됩니다. DynamicControl 컨트롤은 GridView 또는 DetailsView 컨트롤의 TemplateField 필드에서도 사용할 수 있습니다.
DynamicControl 컨트롤은 DynamicField 필드와 같은 기능을 제공합니다. 하지만 DynamicControl 컨트롤은 템플릿 내부에서만 사용되기 때문에 템플릿에 HTML 태그도 추가할 수 있으므로 데이터가 표시되는 방식을 더 유연하게 제어할 수 있습니다.
DynamicControl 컨트롤에 표시할 필드를 지정하려면 DataField 속성을 해당 필드의 이름으로 설정합니다. DataFormatString 속성을 설정하면 필드 값에 사용자 지정 형식 문자열을 적용할 수 있습니다. 기본적으로 형식 문자열은 데이터 바인딩된 컨트롤이 읽기 전용 모드에 있는 경우에만 필드 값에 적용됩니다. 데이터 바인딩된 컨트롤이 편집 모드에 있을 때 표시되는 값에 형식 문자열을 적용하려면 ApplyFormatInEditMode 속성을 true로 설정합니다. 필드 값이 null이면 NullDisplayText 속성을 설정하여 사용자 지정 텍스트를 표시할 수 있습니다. ConvertEmptyStringToNull 속성을 true로 설정하면 DynamicControl 컨트롤은 자동으로 빈 문자열("") 필드 값을 null 값으로 변환합니다.
DynamicControl 컨트롤은 여러 가지 디스플레이 모드를 지원합니다. DynamicControl 컨트롤을 표시할 모드를 지정하려면 Mode 속성을 설정합니다. 다음 표에서는 이러한 모드에 대해 설명합니다.
ReadOnly
사용자가 레코드 또는 데이터 필드의 값을 수정하지 못하도록 하는 디스플레이 모드를 지정합니다. 이 모드는 모든 템플릿에서 사용할 수 있습니다.Edit
사용자가 기존 레코드의 값을 업데이트할 수 있도록 하는 편집 모드를 지정합니다. 이 모드는 EditItemTemplate 템플릿에서 사용됩니다.Insert
사용자가 새 레코드의 값을 입력할 수 있도록 하는 삽입 모드를 지정합니다. 이 모드는 InsertItemTemplate 템플릿에서 사용됩니다.
예제
다음 예제에서는 ListView 컨트롤에서 DynamicControl 컨트롤을 사용하여 데이터베이스 테이블의 값을 표시하고 편집하는 방법을 보여 줍니다.
<%@ 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: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="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: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>