TemplateColumn Třída

Definice

Představuje typ DataGrid sloupce ovládacího prvku, který umožňuje přizpůsobit rozložení ovládacích prvků ve sloupci.

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
Dědičnost
TemplateColumn

Příklady

Následující příklad kódu ukazuje, jak pomocí TemplateColumn třídy vytvořit sloupec v ovládacím DataGrid prvku s vlastním rozložením.


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

Poznámky

TemplateColumn Pomocí typu sloupce v ovládacím DataGrid prvku vytvořte sloupec s přizpůsobeným rozložením ovládacího prvku. Můžete zadat vlastní vzhled oddílu nadpisu, oddíl zápatí a oddíl položek sloupce pomocí HeaderTemplate, FooterTemplatea ItemTemplate vlastností. Můžete také určit, jak se položka upravuje v objektu TemplateColumn nastavením EditItemTemplate vlastnosti.

Konstruktory

TemplateColumn()

Inicializuje novou instanci TemplateColumn třídy.

Vlastnosti

DesignMode

Získá hodnotu, která označuje, zda sloupec je v režimu návrhu.

(Zděděno od DataGridColumn)
EditItemTemplate

Získá nebo nastaví šablonu pro zobrazení položky vybrané pro úpravy v objektu TemplateColumn .

FooterStyle

Získá vlastnosti stylu pro oddíl zápatí sloupce.

(Zděděno od DataGridColumn)
FooterTemplate

Získá nebo nastaví šablonu pro zobrazení oddílu zápatí objektu TemplateColumn .

FooterText

Získá nebo nastaví text zobrazený v oddílu zápatí sloupce.

(Zděděno od DataGridColumn)
HeaderImageUrl

Získá nebo nastaví umístění obrázku, který se zobrazí v oddílu záhlaví sloupce.

(Zděděno od DataGridColumn)
HeaderStyle

Získá vlastnosti stylu pro oddíl záhlaví sloupce.

(Zděděno od DataGridColumn)
HeaderTemplate

Získá nebo nastaví šablonu pro zobrazení oddílu nadpisu objektu TemplateColumn .

HeaderText

Získá nebo nastaví text zobrazený v oddílu záhlaví sloupce.

(Zděděno od DataGridColumn)
IsTrackingViewState

Získá hodnotu, která určuje, zda DataGridColumn je objekt označen k uložení jeho stavu.

(Zděděno od DataGridColumn)
ItemStyle

Získá vlastnosti stylu pro buňky položky ve sloupci.

(Zděděno od DataGridColumn)
ItemTemplate

Získá nebo nastaví šablonu pro zobrazení datové položky v objektu TemplateColumn .

Owner

DataGrid Získá ovládací prvek, ze kterého je sloupec členem.

(Zděděno od DataGridColumn)
SortExpression

Získá nebo nastaví název pole nebo výrazu pro předání OnSortCommand(DataGridSortCommandEventArgs) metodě při výběru sloupce pro řazení.

(Zděděno od DataGridColumn)
ViewState

StateBag Získá objekt, který umožňuje sloupec odvozený z DataGridColumn třídy ukládat jeho vlastnosti.

(Zděděno od DataGridColumn)
Visible

Získá nebo nastaví hodnotu, která označuje, jestli je sloupec viditelný v ovládacím DataGrid prvku.

(Zděděno od DataGridColumn)

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
Initialize()

Poskytuje základní implementaci pro resetování sloupce odvozeného DataGridColumn z třídy do počátečního stavu.

(Zděděno od DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

TableCell Zavolá základní třídu objektu pro inicializaci instance a pak použije pro ListItemType buňku.

LoadViewState(Object)

Načte stav objektu DataGridColumn .

(Zděděno od DataGridColumn)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
OnColumnChanged()

Volá metodu OnColumnsChanged() .

(Zděděno od DataGridColumn)
SaveViewState()

Uloží aktuální stav objektu DataGridColumn .

(Zděděno od DataGridColumn)
ToString()

Vrátí řetězcovou reprezentaci sloupce.

(Zděděno od DataGridColumn)
TrackViewState()

Způsobí sledování změn stavu zobrazení ovládacího prvku serveru, aby je bylo možné uložit do objektu StateBag ovládacího prvku serveru.

(Zděděno od DataGridColumn)

Explicitní implementace rozhraní

IStateManager.IsTrackingViewState

Získá hodnotu, která označuje, zda sloupec sleduje změny stavu zobrazení.

(Zděděno od DataGridColumn)
IStateManager.LoadViewState(Object)

Načte dříve uložený stav.

(Zděděno od DataGridColumn)
IStateManager.SaveViewState()

Vrátí objekt obsahující změny stavu.

(Zděděno od DataGridColumn)
IStateManager.TrackViewState()

Spustí sledování změn stavu.

(Zděděno od DataGridColumn)

Platí pro

Viz také