Export (0) Print
Expand All

TemplateColumn Class

Represents a column type for the DataGrid control that allows you to customize the layout of controls in the column.

System.Object
  System.Web.UI.WebControls.DataGridColumn
    System.Web.UI.WebControls.TemplateColumn

Namespace:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)

public class TemplateColumn : DataGridColumn

The TemplateColumn type exposes the following members.

  NameDescription
Public methodTemplateColumnInitializes a new instance of the TemplateColumn class.
Top

  NameDescription
Protected propertyDesignModeGets a value that indicates whether the column is in design mode. (Inherited from DataGridColumn.)
Public propertyEditItemTemplateGets or sets the template for displaying the item selected for editing in a TemplateColumn object.
Public propertyFooterStyleGets the style properties for the footer section of the column. (Inherited from DataGridColumn.)
Public propertyFooterTemplateGets or sets the template for displaying the footer section of the TemplateColumn object.
Public propertyFooterTextGets or sets the text displayed in the footer section of the column. (Inherited from DataGridColumn.)
Public propertyHeaderImageUrlGets or sets the location of an image to display in the header section of the column. (Inherited from DataGridColumn.)
Public propertyHeaderStyleGets the style properties for the header section of the column. (Inherited from DataGridColumn.)
Public propertyHeaderTemplateGets or sets the template for displaying the heading section of the TemplateColumn object.
Public propertyHeaderTextGets or sets the text displayed in the header section of the column. (Inherited from DataGridColumn.)
Protected propertyIsTrackingViewStateGets a value that determines whether the DataGridColumn object is marked to save its state. (Inherited from DataGridColumn.)
Public propertyItemStyleGets the style properties for the item cells of the column. (Inherited from DataGridColumn.)
Public propertyItemTemplateGets or sets the template for displaying a data item in a TemplateColumn object.
Protected propertyOwnerGets the DataGrid control that the column is a member of. (Inherited from DataGridColumn.)
Public propertySortExpressionGets or sets the name of the field or expression to pass to the OnSortCommand method when a column is selected for sorting. (Inherited from DataGridColumn.)
Protected propertyViewStateGets the System.Web.UI.StateBag object that allows a column derived from the DataGridColumn class to store its properties. (Inherited from DataGridColumn.)
Public propertyVisibleGets or sets a value that indicates whether the column is visible in the DataGrid control. (Inherited from DataGridColumn.)
Top

  NameDescription
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodInitializeProvides the base implementation to reset a column derived from the DataGridColumn class to its initial state. (Inherited from DataGridColumn.)
Public methodInitializeCellInfrastructure. Calls a TableCell object's base class to initialize the instance and then applies a ListItemType to the cell. (Overrides DataGridColumn.InitializeCell(TableCell, Int32, ListItemType).)
Protected methodLoadViewStateLoads the state of the DataGridColumn object. (Inherited from DataGridColumn.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodOnColumnChangedCalls the DataGridDesigner.OnColumnsChanged method. (Inherited from DataGridColumn.)
Protected methodSaveViewStateSaves the current state of the DataGridColumn object. (Inherited from DataGridColumn.)
Public methodToStringReturns the string representation of the column. (Inherited from DataGridColumn.)
Protected methodTrackViewStateCauses tracking of view-state changes to the server control so they can be stored in the server control's System.Web.UI.StateBag object. (Inherited from DataGridColumn.)
Top

  NameDescription
Explicit interface implemetationPrivate propertyIStateManager.IsTrackingViewStateInfrastructure. Gets a value that indicates whether the column is tracking view state changes. (Inherited from DataGridColumn.)
Explicit interface implemetationPrivate methodIStateManager.LoadViewStateInfrastructure. Loads previously saved state. (Inherited from DataGridColumn.)
Explicit interface implemetationPrivate methodIStateManager.SaveViewStateInfrastructure. Returns an object containing state changes. (Inherited from DataGridColumn.)
Explicit interface implemetationPrivate methodIStateManager.TrackViewStateInfrastructure. Starts tracking state changes. (Inherited from DataGridColumn.)
Top

Use the TemplateColumn column type in a DataGrid control to create a column with a customized control layout. You can provide a custom appearance for the heading section, the footer section, and the items section of the column by using the HeaderTemplate, FooterTemplate, and ItemTemplate properties, respectively. You can also control how an item being edited is displayed in the TemplateColumn object by setting the EditItemTemplate property.

The following code example demonstrates how to use the TemplateColumn class to create a column in the DataGrid control with a custom layout.


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

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft