Condividi tramite


TemplateColumn Classe

Definizione

Rappresenta un tipo di colonna per il DataGrid controllo che consente di personalizzare il layout dei controlli nella colonna.

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
Ereditarietà
TemplateColumn

Esempio

Nell'esempio di codice seguente viene illustrato come usare la TemplateColumn classe per creare una colonna nel DataGrid controllo con un layout personalizzato.


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

Commenti

Usare il TemplateColumn tipo di colonna in un DataGrid controllo per creare una colonna con un layout di controllo personalizzato. È possibile fornire un aspetto personalizzato per la sezione dell'intestazione, la sezione piè di pagina e la sezione items della colonna usando rispettivamente le HeaderTemplateproprietà , FooterTemplatee ItemTemplate . È anche possibile controllare la modalità di visualizzazione di un elemento nell'oggetto TemplateColumn impostando la EditItemTemplate proprietà .

Costruttori

Nome Descrizione
TemplateColumn()

Inizializza una nuova istanza della classe TemplateColumn.

Proprietà

Nome Descrizione
DesignMode

Ottiene un valore che indica se la colonna è in modalità progettazione.

(Ereditato da DataGridColumn)
EditItemTemplate

Ottiene o imposta il modello per visualizzare l'elemento selezionato per la modifica in un TemplateColumn oggetto .

FooterStyle

Ottiene le proprietà di stile per la sezione piè di pagina della colonna.

(Ereditato da DataGridColumn)
FooterTemplate

Ottiene o imposta il modello per la visualizzazione della sezione piè di pagina dell'oggetto TemplateColumn .

FooterText

Ottiene o imposta il testo visualizzato nella sezione piè di pagina della colonna.

(Ereditato da DataGridColumn)
HeaderImageUrl

Ottiene o imposta la posizione di un'immagine da visualizzare nella sezione intestazione della colonna.

(Ereditato da DataGridColumn)
HeaderStyle

Ottiene le proprietà di stile per la sezione intestazione della colonna.

(Ereditato da DataGridColumn)
HeaderTemplate

Ottiene o imposta il modello per la visualizzazione della sezione dell'intestazione dell'oggetto TemplateColumn .

HeaderText

Ottiene o imposta il testo visualizzato nella sezione intestazione della colonna.

(Ereditato da DataGridColumn)
IsTrackingViewState

Ottiene un valore che determina se l'oggetto DataGridColumn è contrassegnato per salvare il relativo stato.

(Ereditato da DataGridColumn)
ItemStyle

Ottiene le proprietà di stile per le celle dell'elemento della colonna.

(Ereditato da DataGridColumn)
ItemTemplate

Ottiene o imposta il modello per la visualizzazione di un elemento di dati in un TemplateColumn oggetto .

Owner

Ottiene il DataGrid controllo di cui la colonna è membro.

(Ereditato da DataGridColumn)
SortExpression

Ottiene o imposta il nome del campo o dell'espressione da passare al OnSortCommand(DataGridSortCommandEventArgs) metodo quando viene selezionata una colonna per l'ordinamento.

(Ereditato da DataGridColumn)
ViewState

Ottiene l'oggetto StateBag che consente a una colonna derivata dalla DataGridColumn classe di archiviarne le proprietà.

(Ereditato da DataGridColumn)
Visible

Ottiene o imposta un valore che indica se la colonna è visibile nel DataGrid controllo .

(Ereditato da DataGridColumn)

Metodi

Nome Descrizione
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
Initialize()

Fornisce l'implementazione di base per reimpostare una colonna derivata dalla DataGridColumn classe allo stato iniziale.

(Ereditato da DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Chiama la classe base di un TableCell oggetto per inizializzare l'istanza e quindi applica un oggetto ListItemType alla cella.

LoadViewState(Object)

Carica lo stato dell'oggetto DataGridColumn .

(Ereditato da DataGridColumn)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnColumnChanged()

Chiama il OnColumnsChanged() metodo .

(Ereditato da DataGridColumn)
SaveViewState()

Salva lo stato corrente dell'oggetto DataGridColumn .

(Ereditato da DataGridColumn)
ToString()

Restituisce la rappresentazione di stringa della colonna.

(Ereditato da DataGridColumn)
TrackViewState()

Determina il rilevamento delle modifiche dello stato di visualizzazione al controllo server in modo che possano essere archiviate nell'oggetto del StateBag controllo server.

(Ereditato da DataGridColumn)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IStateManager.IsTrackingViewState

Ottiene un valore che indica se la colonna sta tenendo traccia delle modifiche dello stato di visualizzazione.

(Ereditato da DataGridColumn)
IStateManager.LoadViewState(Object)

Carica lo stato salvato in precedenza.

(Ereditato da DataGridColumn)
IStateManager.SaveViewState()

Restituisce un oggetto contenente modifiche dello stato.

(Ereditato da DataGridColumn)
IStateManager.TrackViewState()

Avvia il rilevamento delle modifiche dello stato.

(Ereditato da DataGridColumn)

Si applica a

Vedi anche