TemplateColumn Klass

Definition

Representerar en kolumntyp för kontrollen DataGrid som gör att du kan anpassa layouten för kontroller i kolumnen.

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

Exempel

I följande kodexempel visas hur du använder TemplateColumn klassen för att skapa en kolumn i DataGrid kontrollen med en anpassad 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>

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

Kommentarer

TemplateColumn Använd kolumntypen i en DataGrid kontroll för att skapa en kolumn med en anpassad kontrolllayout. Du kan ange ett anpassat utseende för rubrikavsnittet, sidfotsavsnittet och elementavsnittet i kolumnen med hjälp HeaderTemplateav egenskaperna , FooterTemplaterespektive ItemTemplate . Du kan också styra hur ett objekt som redigeras visas i TemplateColumn objektet genom att ange egenskapen EditItemTemplate .

Konstruktorer

Name Description
TemplateColumn()

Initierar en ny instans av TemplateColumn klassen.

Egenskaper

Name Description
DesignMode

Hämtar ett värde som anger om kolumnen är i designläge.

(Ärvd från DataGridColumn)
EditItemTemplate

Hämtar eller anger mallen för att visa det objekt som valts för redigering i ett TemplateColumn objekt.

FooterStyle

Hämtar formategenskaperna för sidfotsavsnittet i kolumnen.

(Ärvd från DataGridColumn)
FooterTemplate

Hämtar eller anger mallen för att visa sidfotsavsnittet i TemplateColumn objektet.

FooterText

Hämtar eller anger texten som visas i sidfotsavsnittet i kolumnen.

(Ärvd från DataGridColumn)
HeaderImageUrl

Hämtar eller anger platsen för en bild som ska visas i rubrikavsnittet i kolumnen.

(Ärvd från DataGridColumn)
HeaderStyle

Hämtar formategenskaperna för rubrikavsnittet i kolumnen.

(Ärvd från DataGridColumn)
HeaderTemplate

Hämtar eller anger mallen för att visa rubrikavsnittet i TemplateColumn objektet.

HeaderText

Hämtar eller anger texten som visas i rubrikavsnittet i kolumnen.

(Ärvd från DataGridColumn)
IsTrackingViewState

Hämtar ett värde som avgör om DataGridColumn objektet är markerat för att spara dess tillstånd.

(Ärvd från DataGridColumn)
ItemStyle

Hämtar formategenskaperna för objektcellerna i kolumnen.

(Ärvd från DataGridColumn)
ItemTemplate

Hämtar eller anger mallen för att visa ett dataobjekt i ett TemplateColumn objekt.

Owner

Hämtar kontrollen DataGrid som kolumnen är medlem i.

(Ärvd från DataGridColumn)
SortExpression

Hämtar eller anger namnet på fältet eller uttrycket som ska skickas till OnSortCommand(DataGridSortCommandEventArgs) metoden när en kolumn har valts för sortering.

(Ärvd från DataGridColumn)
ViewState

Hämtar objektet StateBag som tillåter att en kolumn som härleds DataGridColumn från klassen lagrar dess egenskaper.

(Ärvd från DataGridColumn)
Visible

Hämtar eller anger ett värde som anger om kolumnen visas i DataGrid kontrollen.

(Ärvd från DataGridColumn)

Metoder

Name Description
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
Initialize()

Tillhandahåller basimplementeringen för att återställa en kolumn som härletts DataGridColumn från klassen till dess ursprungliga tillstånd.

(Ärvd från DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Anropar ett TableCell objekts basklass för att initiera instansen och tillämpar sedan en ListItemType på cellen.

LoadViewState(Object)

Läser in objektets DataGridColumn tillstånd.

(Ärvd från DataGridColumn)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnColumnChanged()

Anropar metoden OnColumnsChanged().

(Ärvd från DataGridColumn)
SaveViewState()

Sparar objektets aktuella tillstånd DataGridColumn .

(Ärvd från DataGridColumn)
ToString()

Returnerar strängrepresentationen av kolumnen.

(Ärvd från DataGridColumn)
TrackViewState()

Orsakar spårning av visningstillståndsändringar i serverkontrollen så att de kan lagras i serverkontrollens StateBag objekt.

(Ärvd från DataGridColumn)

Explicita gränssnittsimplementeringar

Name Description
IStateManager.IsTrackingViewState

Hämtar ett värde som anger om kolumnen spårar visningstillståndsändringar.

(Ärvd från DataGridColumn)
IStateManager.LoadViewState(Object)

Läser in tidigare sparat tillstånd.

(Ärvd från DataGridColumn)
IStateManager.SaveViewState()

Returnerar ett objekt som innehåller tillståndsändringar.

(Ärvd från DataGridColumn)
IStateManager.TrackViewState()

Börjar spåra tillståndsändringar.

(Ärvd från DataGridColumn)

Gäller för

Se även