TemplateColumn Classe

Definição

Representa um tipo de coluna para o DataGrid controlo que permite personalizar a disposição dos controlos dentro da coluna.

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
Herança
TemplateColumn

Exemplos

O exemplo de código seguinte demonstra como usar a TemplateColumn classe para criar uma coluna no DataGrid controlo com um layout personalizado.


<%@ 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>

Observações

Use o tipo de TemplateColumn coluna num DataGrid controlo para criar uma coluna com um layout de controlo personalizado. Pode fornecer uma aparência personalizada para a secção de cabeçalho, a secção do rodapé e a secção de itens da coluna usando as HeaderTemplatepropriedades , FooterTemplate, e ItemTemplate respetivamente. Também pode controlar como um item que está a ser editado é exibido no TemplateColumn objeto, definindo a EditItemTemplate propriedade.

Construtores

Name Description
TemplateColumn()

Inicializa uma nova instância da TemplateColumn classe.

Propriedades

Name Description
DesignMode

Recebe um valor que indica se a coluna está em modo de design.

(Herdado de DataGridColumn)
EditItemTemplate

Obtém ou define o modelo para mostrar o item selecionado para edição num TemplateColumn objeto.

FooterStyle

Obtém as propriedades de estilo para a secção de rodapé da coluna.

(Herdado de DataGridColumn)
FooterTemplate

Obtém ou define o modelo para exibir a secção do rodapé do TemplateColumn objeto.

FooterText

Recebe ou define o texto apresentado na secção de rodapé da coluna.

(Herdado de DataGridColumn)
HeaderImageUrl

Obtém ou define a localização de uma imagem para ser exibida na secção do cabeçalho da coluna.

(Herdado de DataGridColumn)
HeaderStyle

Obtém as propriedades de estilo para a secção do cabeçalho da coluna.

(Herdado de DataGridColumn)
HeaderTemplate

Obtém ou define o modelo para mostrar a secção do cabeçalho do TemplateColumn objeto.

HeaderText

Recebe ou define o texto apresentado na secção de cabeçalho da coluna.

(Herdado de DataGridColumn)
IsTrackingViewState

Obtém um valor que determina se o DataGridColumn objeto está marcado para guardar o seu estado.

(Herdado de DataGridColumn)
ItemStyle

Obtém as propriedades de estilo das células do item da coluna.

(Herdado de DataGridColumn)
ItemTemplate

Obtém ou define o modelo para exibir um elemento de dados num TemplateColumn objeto.

Owner

Obtém o DataGrid controlo do qual a coluna pertence.

(Herdado de DataGridColumn)
SortExpression

Recebe ou define o nome do campo ou expressão a passar ao OnSortCommand(DataGridSortCommandEventArgs) método quando uma coluna é selecionada para ordenação.

(Herdado de DataGridColumn)
ViewState

Obtém o StateBag objeto que permite que uma coluna derivada da DataGridColumn classe armazene as suas propriedades.

(Herdado de DataGridColumn)
Visible

Recebe ou define um valor que indica se a coluna é visível no DataGrid controlo.

(Herdado de DataGridColumn)

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
Initialize()

Fornece a implementação base para reiniciar uma coluna derivada da DataGridColumn classe para o seu estado inicial.

(Herdado de DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Chama a classe base de um TableCell objeto para inicializar a instância e depois aplica a ListItemType à célula.

LoadViewState(Object)

Carrega o estado do DataGridColumn objeto.

(Herdado de DataGridColumn)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnColumnChanged()

Chama o método OnColumnsChanged().

(Herdado de DataGridColumn)
SaveViewState()

Guarda o estado atual do DataGridColumn objeto.

(Herdado de DataGridColumn)
ToString()

Devolve a representação da cadeia da coluna.

(Herdado de DataGridColumn)
TrackViewState()

Causa o rastreio das alterações de estado de visualização no controlo do servidor para que possam ser armazenadas no objeto do StateBag controlo do servidor.

(Herdado de DataGridColumn)

Implementações de Interface Explícita

Name Description
IStateManager.IsTrackingViewState

Recebe um valor que indica se a coluna está a acompanhar alterações no estado da vista.

(Herdado de DataGridColumn)
IStateManager.LoadViewState(Object)

Carrega o estado previamente guardado.

(Herdado de DataGridColumn)
IStateManager.SaveViewState()

Devolve um objeto contendo alterações de estado.

(Herdado de DataGridColumn)
IStateManager.TrackViewState()

Começa a acompanhar as alterações de estado.

(Herdado de DataGridColumn)

Aplica-se a

Ver também