TemplateColumn Classe

Définition

Représente un type de colonne pour le contrôle DataGrid qui vous permet de personnaliser la disposition des contrôles dans la colonne.

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
Héritage
TemplateColumn

Exemples

L’exemple de code suivant montre comment utiliser la TemplateColumn classe pour créer une colonne dans le DataGrid contrôle avec une disposition personnalisée.


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

Remarques

Utilisez le TemplateColumn type de colonne dans un DataGrid contrôle pour créer une colonne avec une disposition de contrôle personnalisée. Vous pouvez fournir une apparence personnalisée pour la section d’en-tête, la section pied de page et la section éléments de la colonne à l’aide des HeaderTemplatepropriétés et FooterTemplateItemTemplate des propriétés, respectivement. Vous pouvez également contrôler l’affichage d’un élément dans l’objet TemplateColumn en définissant la EditItemTemplate propriété.

Constructeurs

TemplateColumn()

Initialise une nouvelle instance de la classe TemplateColumn.

Propriétés

DesignMode

Obtient une valeur indiquant si la colonne est en mode design.

(Hérité de DataGridColumn)
EditItemTemplate

Obtient ou définit le modèle pour afficher l'élément sélectionné à modifier dans un objet TemplateColumn.

FooterStyle

Obtient les propriétés de style pour la section de pied de page de la colonne.

(Hérité de DataGridColumn)
FooterTemplate

Obtient ou définit le modèle utilisé pour afficher le pied de page de l'objet TemplateColumn.

FooterText

Obtient ou définit le texte affiché dans la section de pied de page de la colonne.

(Hérité de DataGridColumn)
HeaderImageUrl

Obtient ou définit l'emplacement d'une image à afficher dans la section d'en-tête de la colonne.

(Hérité de DataGridColumn)
HeaderStyle

Obtient les propriétés de style pour la section d'en-tête de la colonne.

(Hérité de DataGridColumn)
HeaderTemplate

Obtient ou définit le modèle utilisé pour afficher l'en-tête de l'objet TemplateColumn.

HeaderText

Obtient ou définit le texte affiché dans la section d'en-tête de la colonne.

(Hérité de DataGridColumn)
IsTrackingViewState

Obtient une valeur qui détermine si l'objet DataGridColumn est marqué pour enregistrer son état.

(Hérité de DataGridColumn)
ItemStyle

Obtient les propriétés de style pour les cellules d'éléments de la colonne.

(Hérité de DataGridColumn)
ItemTemplate

Obtient ou définit le modèle pour afficher un élément de données dans un objet TemplateColumn.

Owner

Obtient le contrôle DataGrid dont la colonne est membre.

(Hérité de DataGridColumn)
SortExpression

Obtient ou définit le nom du champ ou de l'expression à passer à la méthode OnSortCommand(DataGridSortCommandEventArgs) lorsqu'une colonne est sélectionnée pour être triée.

(Hérité de DataGridColumn)
ViewState

Obtient l'objet StateBag qui permet à une colonne dérivée de la classe DataGridColumn de stocker ses propriétés.

(Hérité de DataGridColumn)
Visible

Obtient ou définit une valeur qui indique si la colonne est visible dans le contrôle DataGrid.

(Hérité de DataGridColumn)

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
Initialize()

Fournit l’implémentation de base pour réinitialiser à son état initial une colonne dérivée de la classe DataGridColumn.

(Hérité de DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Appelle la classe de base d'un objet TableCell pour initialiser l'instance, puis applique ListItemType à la cellule.

LoadViewState(Object)

Charge l'état de l'objet DataGridColumn.

(Hérité de DataGridColumn)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
OnColumnChanged()

Appelle la méthode OnColumnsChanged().

(Hérité de DataGridColumn)
SaveViewState()

Enregistre l'état actuel de l'objet DataGridColumn.

(Hérité de DataGridColumn)
ToString()

Retourne la représentation sous forme de chaîne de la colonne.

(Hérité de DataGridColumn)
TrackViewState()

Provoque le suivi des modifications de l'état d'affichage pour le contrôle serveur afin qu'elles puissent être stockées dans l'objet StateBag du contrôle serveur.

(Hérité de DataGridColumn)

Implémentations d’interfaces explicites

IStateManager.IsTrackingViewState

Obtient une valeur qui indique si la colonne suit les changements de l'état d'affichage.

(Hérité de DataGridColumn)
IStateManager.LoadViewState(Object)

Charge l'état enregistré précédemment.

(Hérité de DataGridColumn)
IStateManager.SaveViewState()

Retourne un objet contenant les modifications de l'état.

(Hérité de DataGridColumn)
IStateManager.TrackViewState()

Commence à suivre les modifications d'état.

(Hérité de DataGridColumn)

S’applique à

Voir aussi