다음을 통해 공유


TemplateColumn 클래스

정의

열에서 컨트롤의 레이아웃을 사용자 지정할 수 있는 DataGrid 컨트롤의 열 형식을 나타냅니다.

public ref class TemplateColumn : System::Web::UI::WebControls::DataGridColumn
public class TemplateColumn : System.Web.UI.WebControls.DataGridColumn
type TemplateColumn = class
    inherit DataGridColumn
Public Class TemplateColumn
Inherits DataGridColumn
상속
TemplateColumn

예제

다음 코드 예제를 사용 하는 방법에 설명 합니다 TemplateColumn 클래스에서 열을 만들 수는 DataGrid 사용자 지정 레이아웃을 사용 하 여 컨트롤입니다.


<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <script runat="server">

      DataTable Store = new DataTable();
      DataView StoreView;  

      void Page_Load(Object sender, EventArgs e) 
      {
         if(Session["StoreData"] == null)
         {
            DataRow dr;
 
            Store = new DataTable();      

            Store.Columns.Add(new DataColumn("Tax", typeof(String)));
            Store.Columns.Add(new DataColumn("Item", typeof(String)));
            Store.Columns.Add(new DataColumn("Price", typeof(String)));

            Session["StoreData"] = Store;
            
            // Create sample data.
            for (int i = 1; i <= 4; i++) 
            {
               dr = Store.NewRow();

               dr[0] = "0.0%";
               dr[1] = "Item " + i.ToString();
               dr[2] = (1.23 * (i + 1)).ToString();
 
               Store.Rows.Add(dr);
            }       

         }
         else
            Store = (DataTable)Session["StoreData"];

         StoreView = new DataView(Store);
         StoreView.Sort="Item";

         if(!IsPostBack)                    
            BindGrid();
                   
      }

      void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs e) 
      {
         MyDataGrid.EditItemIndex = e.Item.ItemIndex;
         BindGrid();
      }

      void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs e) 
      {
         MyDataGrid.EditItemIndex = -1;
         BindGrid();
      }

      void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e) 
      {
         // Get the text box that contains the price to edit. 
         // For bound columns the edited value is stored in a text box.
         // The text box is the first control in the Controls collection.
         TextBox priceText = (TextBox)e.Item.Cells[3].Controls[0];

         // Get the check box that indicates whether to include tax from the 
         // TemplateColumn. Notice that in this case, the check box control is
         // second control in the Controls collection.
         CheckBox taxCheck = (CheckBox)e.Item.Cells[2].Controls[1];

         String item = e.Item.Cells[1].Text;
         String price = priceText.Text;
       
         DataRow dr;

         // With a database, use an update command.  Since the data source is 
         // an in-memory DataTable, delete the old row and replace it with a new one.

         // Remove old entry.
         StoreView.RowFilter = "Item='" + item + "'";
         if (StoreView.Count > 0)
            StoreView.Delete(0);
         StoreView.RowFilter = "";
 
         // Add new entry.
         dr = Store.NewRow();

         if (taxCheck.Checked)
            dr[0] = "8.6%";
         else 
            dr[0] = "0.0%";
         dr[1] = item;
         dr[2] = price;
         Store.Rows.Add(dr);

         MyDataGrid.EditItemIndex = -1;
         BindGrid();
      }

      void BindGrid() 
      {
         MyDataGrid.DataSource = StoreView;
         MyDataGrid.DataBind();
      }

   </script>

<head runat="server">
    <title>TemplateColumn Example</title>
</head>
<body>

   <form id="form1" runat="server">

      <h3>TemplateColumn Example</h3>

      <asp:DataGrid id="MyDataGrid" runat="server"
           BorderColor="black"
           CellPadding="2"        
           OnEditCommand="MyDataGrid_Edit"
           OnCancelCommand="MyDataGrid_Cancel"
           OnUpdateCommand="MyDataGrid_Update"
           ShowFooter="True"
           AutoGenerateColumns="false">

         <Columns>

            <asp:EditCommandColumn
                 EditText="Edit"
                 CancelText="Cancel"
                 UpdateText="Update"
                 ItemStyle-Wrap="false"
                 HeaderText="Edit Controls"/>

            <asp:BoundColumn HeaderText="Description" 
                 ReadOnly="true" 
                 DataField="Item"/>

            <asp:TemplateColumn>

               <HeaderTemplate>
                  <b> Tax </b>
               </HeaderTemplate>

               <ItemTemplate>
                  <asp:Label
                       Text='<%# DataBinder.Eval(Container.DataItem, "Tax") %>'
                       runat="server"/>
               </ItemTemplate>

               <EditItemTemplate>

                  <asp:CheckBox
                       Text="Taxable" 
                       runat="server"/>

               </EditItemTemplate>

               <FooterTemplate>
                  <asp:HyperLink id="HyperLink1"
                       Text="Microsoft"
                       NavigateUrl="http://www.microsoft.com"
                       runat="server"/>
               </FooterTemplate>

            </asp:TemplateColumn>

            <asp:BoundColumn HeaderText="Price" 
                 DataField="Price"/>

         </Columns>

      </asp:DataGrid>

   </form>

</body>
</html>

<%@ Page Language="VB" AutoEventWireup="True" %>
<%@ Import Namespace="System.Data" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
   <script runat="server">

      Private Store As DataTable = New DataTable()
      Private StoreView As DataView  

      Sub Page_Load(sender As Object, e As EventArgs) 
     
         If IsNothing(Session("StoreData")) Then 
         
            Dim dr As DataRow
            Dim i As Integer
 
            Store = New DataTable()      

            Store.Columns.Add(New DataColumn("Tax", GetType(String)))
            Store.Columns.Add(New DataColumn("Item", GetType(String)))
            Store.Columns.Add(New DataColumn("Price", GetType(String)))

            Session("StoreData") = Store
            
            ' Create sample data.
            For i = 1 to 4 
    
               dr = Store.NewRow()

               dr(0) = "0.0%"
               dr(1) = "Item " & i.ToString()
               dr(2) = (1.23 * (i + 1)).ToString()
 
               Store.Rows.Add(dr)

            Next i       

         Else
            Store = Session("StoreData")

         End If

         StoreView = New DataView(Store)
         StoreView.Sort="Item"

         If Not IsPostBack Then                    
            BindGrid()
         End If
                   
      End Sub

      Sub MyDataGrid_Edit(sender As Object, e As DataGridCommandEventArgs) 
      
         MyDataGrid.EditItemIndex = e.Item.ItemIndex
         BindGrid()

      End Sub

      Sub MyDataGrid_Cancel(sender As Object, e As DataGridCommandEventArgs) 
      
         MyDataGrid.EditItemIndex = -1
         BindGrid()

      End Sub

      Sub MyDataGrid_Update(sender As Object, e As DataGridCommandEventArgs) 
      
         ' Get the text box that contains the price to edit. 
         ' For bound columns the edited value is stored in a text box.
         ' The text box is the first control in the Controls collection.
         Dim priceText As TextBox = e.Item.Cells(3).Controls(0)

         ' Get the check box that indicates whether to include tax from the 
         ' TemplateColumn. Notice that in this case, the check box control is
         ' second control in the Controls collection.
         Dim taxCheck As CheckBox = e.Item.Cells(2).Controls(1)

         Dim item As String = e.Item.Cells(1).Text
         Dim price As String = priceText.Text
       
         Dim dr As DataRow

         ' With a database, use an update command.  Since the data source is 
         ' an in-memory DataTable, delete the old row and replace it with a new one.

         ' Remove old entry.
         StoreView.RowFilter = "Item='" & item & "'"
         If StoreView.Count > 0 Then
            StoreView.Delete(0)
         End If
         StoreView.RowFilter = ""
 
         ' Add new entry.
         dr = Store.NewRow()

         If taxCheck.Checked Then
            dr(0) = "8.6%"
         Else 
            dr(0) = "0.0%"
         End If
         dr(1) = item
         dr(2) = price
         Store.Rows.Add(dr)

         MyDataGrid.EditItemIndex = -1
         BindGrid()

      End Sub

      Sub BindGrid() 
      
         MyDataGrid.DataSource = StoreView
         MyDataGrid.DataBind()
      
      End Sub

   </script>

<head runat="server">
    <title>TemplateColumn Example</title>
</head>
<body>

   <form id="form1" runat="server">

      <h3>TemplateColumn Example</h3>

      <asp:DataGrid id="MyDataGrid" runat="server"
           BorderColor="black"
           CellPadding="2"        
           OnEditCommand="MyDataGrid_Edit"
           OnCancelCommand="MyDataGrid_Cancel"
           OnUpdateCommand="MyDataGrid_Update"
           ShowFooter="True"
           AutoGenerateColumns="false">

         <Columns>

            <asp:EditCommandColumn
                 EditText="Edit"
                 CancelText="Cancel"
                 UpdateText="Update"
                 ItemStyle-Wrap="false"
                 HeaderText="Edit Controls"/>

            <asp:BoundColumn HeaderText="Description" 
                 ReadOnly="true" 
                 DataField="Item"/>

            <asp:TemplateColumn>

               <HeaderTemplate>
                  <b> Tax </b>
               </HeaderTemplate>

               <ItemTemplate>
                  <asp:Label
                       Text='<%# DataBinder.Eval(Container.DataItem, "Tax") %>'
                       runat="server"/>
               </ItemTemplate>

               <EditItemTemplate>

                  <asp:CheckBox
                       Text="Taxable" 
                       runat="server"/>

               </EditItemTemplate>

               <FooterTemplate>
                  <asp:HyperLink id="HyperLink1"
                       Text="Microsoft"
                       NavigateUrl="http://www.microsoft.com"
                       runat="server"/>
               </FooterTemplate>

            </asp:TemplateColumn>

            <asp:BoundColumn HeaderText="Price" 
                 DataField="Price"/>

         </Columns>

      </asp:DataGrid>

   </form>

</body>
</html>

설명

사용 하 여는 TemplateColumn 열의 형식에는 DataGrid 컨트롤을 사용자 지정된 컨트롤 레이아웃을 사용 하 여 열을 만듭니다. 사용 하 여 머리글 구역을, 바닥글 섹션 및 열의 항목 섹션에 대 한 사용자 지정 모양을 제공할 수 있습니다 합니다 HeaderTemplate, FooterTemplate, 및 ItemTemplate 속성을 각각. 편집 중인 항목에 표시 되는 방식을 제어할 수도 있습니다는 TemplateColumn 설정 하 여 개체를 EditItemTemplate 속성입니다.

생성자

TemplateColumn()

TemplateColumn 클래스의 새 인스턴스를 초기화합니다.

속성

DesignMode

열이 디자인 모드인지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
EditItemTemplate

편집을 위해 TemplateColumn 개체에서 선택한 항목을 표시하기 위한 템플릿을 가져오거나 설정합니다.

FooterStyle

열의 바닥글 구역에 대한 스타일 속성을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
FooterTemplate

TemplateColumn 개체의 바닥글 구역을 표시하기 위한 템플릿을 가져오거나 설정합니다.

FooterText

열의 바닥글 구역에 표시할 텍스트를 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)
HeaderImageUrl

열의 머리글 구역에 표시할 이미지의 위치를 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)
HeaderStyle

열의 머리글 구역에 대한 스타일 속성을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
HeaderTemplate

TemplateColumn 개체의 머리글 구역을 표시하기 위한 템플릿을 가져오거나 설정합니다.

HeaderText

열의 머리글 구역에 표시할 텍스트를 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)
IsTrackingViewState

DataGridColumn 개체가 상태를 저장하도록 표시되었는지 여부를 확인하는 값을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
ItemStyle

열의 항목 셀에 대한 스타일 속성을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
ItemTemplate

TemplateColumn 개체에서 데이터 항목을 표시하기 위한 템플릿을 가져오거나 설정합니다.

Owner

열을 멤버로 갖는 DataGrid 컨트롤을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
SortExpression

정렬할 열을 선택한 경우 OnSortCommand(DataGridSortCommandEventArgs) 메서드에 전달할 필드 또는 식 이름을 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)
ViewState

StateBag 클래스에서 파생된 열이 자신의 속성을 저장할 수 있게 하는 DataGridColumn 개체를 가져옵니다.

(다음에서 상속됨 DataGridColumn)
Visible

DataGrid 컨트롤에서 열을 볼 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.

(다음에서 상속됨 DataGridColumn)

메서드

Equals(Object)

지정된 개체가 현재 개체와 같은지 확인합니다.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.

(다음에서 상속됨 Object)
Initialize()

DataGridColumn 클래스에서 파생된 열을 초기 상태로 다시 설정하는 기본 구현을 제공합니다.

(다음에서 상속됨 DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

TableCell 개체의 기본 클래스를 호출하여 인스턴스를 초기화한 다음 ListItemType을 셀에 적용합니다.

LoadViewState(Object)

DataGridColumn 개체의 상태를 로드합니다.

(다음에서 상속됨 DataGridColumn)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
OnColumnChanged()

OnColumnsChanged() 메서드를 호출합니다.

(다음에서 상속됨 DataGridColumn)
SaveViewState()

DataGridColumn 개체의 현재 상태를 저장합니다.

(다음에서 상속됨 DataGridColumn)
ToString()

열의 문자열 표현을 반환합니다.

(다음에서 상속됨 DataGridColumn)
TrackViewState()

서버 컨트롤의 뷰 상태 변경 사항 추적 작업을 실행하여 서버 컨트롤의 StateBag 개체에 변경 사항이 저장되도록 합니다.

(다음에서 상속됨 DataGridColumn)

명시적 인터페이스 구현

IStateManager.IsTrackingViewState

열에서 뷰 상태 변경 내용을 추적하는지 여부를 나타내는 값을 가져옵니다.

(다음에서 상속됨 DataGridColumn)
IStateManager.LoadViewState(Object)

이전에 저장된 상태를 로드합니다.

(다음에서 상속됨 DataGridColumn)
IStateManager.SaveViewState()

상태 변경 사항이 포함된 개체를 반환합니다.

(다음에서 상속됨 DataGridColumn)
IStateManager.TrackViewState()

상태 변경 사항 추적을 시작합니다.

(다음에서 상속됨 DataGridColumn)

적용 대상

추가 정보