Share via


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">&nbsp;</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="&nbsp;" />
            </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">&nbsp;</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="&nbsp;" />
            </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