TemplateColumn Klasa

Definicja

Reprezentuje typ kolumny kontrolki DataGrid , która umożliwia dostosowanie układu kontrolek w kolumnie.

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
Dziedziczenie
TemplateColumn

Przykłady

W poniższym przykładzie kodu pokazano, jak za pomocą TemplateColumn klasy utworzyć kolumnę w kontrolce DataGrid z układem niestandardowym.


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

Uwagi

TemplateColumn Użyj typu kolumny w kontrolceDataGrid, aby utworzyć kolumnę z dostosowanym układem kontrolki. Możesz podać niestandardowy wygląd sekcji nagłówka, sekcji stopki i sekcji elementów kolumny przy użyciu HeaderTemplateodpowiednio właściwości , FooterTemplatei ItemTemplate . Możesz również kontrolować sposób wyświetlania edytowanego elementu w TemplateColumn obiekcie, ustawiając EditItemTemplate właściwość .

Konstruktory

TemplateColumn()

Inicjuje nowe wystąpienie klasy TemplateColumn.

Właściwości

DesignMode

Pobiera wartość wskazującą, czy kolumna jest w trybie projektowania.

(Odziedziczone po DataGridColumn)
EditItemTemplate

Pobiera lub ustawia szablon do wyświetlania elementu wybranego do edycji w TemplateColumn obiekcie.

FooterStyle

Pobiera właściwości stylu dla sekcji stopki kolumny.

(Odziedziczone po DataGridColumn)
FooterTemplate

Pobiera lub ustawia szablon do wyświetlania sekcji TemplateColumn stopki obiektu.

FooterText

Pobiera lub ustawia tekst wyświetlany w sekcji stopki kolumny.

(Odziedziczone po DataGridColumn)
HeaderImageUrl

Pobiera lub ustawia lokalizację obrazu do wyświetlenia w sekcji nagłówka kolumny.

(Odziedziczone po DataGridColumn)
HeaderStyle

Pobiera właściwości stylu dla sekcji nagłówka kolumny.

(Odziedziczone po DataGridColumn)
HeaderTemplate

Pobiera lub ustawia szablon do wyświetlania sekcji nagłówka TemplateColumn obiektu.

HeaderText

Pobiera lub ustawia tekst wyświetlany w sekcji nagłówka kolumny.

(Odziedziczone po DataGridColumn)
IsTrackingViewState

Pobiera wartość określającą, czy DataGridColumn obiekt jest oznaczony w celu zapisania stanu.

(Odziedziczone po DataGridColumn)
ItemStyle

Pobiera właściwości stylu dla komórek elementów kolumny.

(Odziedziczone po DataGridColumn)
ItemTemplate

Pobiera lub ustawia szablon do wyświetlania elementu danych w TemplateColumn obiekcie.

Owner

Pobiera kontrolkę DataGrid , do którego należy kolumna.

(Odziedziczone po DataGridColumn)
SortExpression

Pobiera lub ustawia nazwę pola lub wyrażenia, które ma być przekazywane do OnSortCommand(DataGridSortCommandEventArgs) metody po wybraniu kolumny do sortowania.

(Odziedziczone po DataGridColumn)
ViewState

StateBag Pobiera obiekt, który umożliwia kolumnie pochodzącej DataGridColumn z klasy przechowywanie jego właściwości.

(Odziedziczone po DataGridColumn)
Visible

Pobiera lub ustawia wartość wskazującą, czy kolumna jest widoczna w kontrolce DataGrid .

(Odziedziczone po DataGridColumn)

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
Initialize()

Zapewnia implementację podstawową w celu zresetowania kolumny pochodzącej z klasy do stanu początkowego DataGridColumn .

(Odziedziczone po DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Wywołuje klasę bazową TableCell obiektu w celu zainicjowania wystąpienia, a następnie stosuje ListItemType obiekt do komórki.

LoadViewState(Object)

Ładuje stan DataGridColumn obiektu.

(Odziedziczone po DataGridColumn)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
OnColumnChanged()

Wywołuje metodę OnColumnsChanged() .

(Odziedziczone po DataGridColumn)
SaveViewState()

Zapisuje bieżący stan DataGridColumn obiektu.

(Odziedziczone po DataGridColumn)
ToString()

Zwraca reprezentację ciągu kolumny.

(Odziedziczone po DataGridColumn)
TrackViewState()

Powoduje śledzenie zmian stanu widoku w kontrolce serwera, dzięki czemu mogą być przechowywane w obiekcie kontroli StateBag serwera.

(Odziedziczone po DataGridColumn)

Jawne implementacje interfejsu

IStateManager.IsTrackingViewState

Pobiera wartość wskazującą, czy kolumna śledzi zmiany stanu widoku.

(Odziedziczone po DataGridColumn)
IStateManager.LoadViewState(Object)

Ładuje wcześniej zapisany stan.

(Odziedziczone po DataGridColumn)
IStateManager.SaveViewState()

Zwraca obiekt zawierający zmiany stanu.

(Odziedziczone po DataGridColumn)
IStateManager.TrackViewState()

Rozpoczyna śledzenie zmian stanu.

(Odziedziczone po DataGridColumn)

Dotyczy

Zobacz też