TemplateColumn Класс

Определение

Представляет тип столбца для элемента управления DataGrid, который позволяет настраивать расположение элементов управления в столбце.Represents a column type for the DataGrid control that allows you to customize the layout of controls in the column.

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
Наследование
TemplateColumn

Примеры

В следующем примере кода показано, как использовать TemplateColumn класс для создания столбца DataGrid в элементе управления с пользовательским макетом.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>


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

Комментарии

Используйте тип DataGrid столбца в элементе управления для создания столбца с настраиваемым макетом элемента управления. TemplateColumnUse the TemplateColumn column type in a DataGrid control to create a column with a customized control layout. Можно предоставить пользовательский внешний вид для раздела заголовка, нижнего колонтитула и раздела Items в столбце с помощью HeaderTemplateсвойств, FooterTemplateи ItemTemplate соответственно.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. Можно также управлять отображением редактируемого элемента в TemplateColumn объекте путем EditItemTemplate задания свойства.You can also control how an item being edited is displayed in the TemplateColumn object by setting the EditItemTemplate property.

Конструкторы

TemplateColumn()

Инициализирует новый экземпляр класса TemplateColumn.Initializes a new instance of the TemplateColumn class.

Свойства

DesignMode

Возвращает значение, показывающее, находится ли столбец в режиме конструктора.Gets a value that indicates whether the column is in design mode.

(Унаследовано от DataGridColumn)
EditItemTemplate

Получает или задает шаблон для отображения в объекте TemplateColumn элемента, выбранного для редактирования.Gets or sets the template for displaying the item selected for editing in a TemplateColumn object.

FooterStyle

Возвращает свойства стиля для раздела нижнего колонтитула столбца.Gets the style properties for the footer section of the column.

(Унаследовано от DataGridColumn)
FooterTemplate

Получает или задает шаблон для отображения нижнего колонтитула объекта TemplateColumn.Gets or sets the template for displaying the footer section of the TemplateColumn object.

FooterText

Получает или задает текст, отображаемый в разделе нижнего колонтитула столбца.Gets or sets the text displayed in the footer section of the column.

(Унаследовано от DataGridColumn)
HeaderImageUrl

Получает или задает размещение изображения, отображаемого в разделе нижнего колонтитула столбца.Gets or sets the location of an image to display in the header section of the column.

(Унаследовано от DataGridColumn)
HeaderStyle

Возвращает свойства стиля для раздела верхнего колонтитула столбца.Gets the style properties for the header section of the column.

(Унаследовано от DataGridColumn)
HeaderTemplate

Получает или задает шаблон для отображения верхнего колонтитула объекта TemplateColumn.Gets or sets the template for displaying the heading section of the TemplateColumn object.

HeaderText

Получает или задает текст, отображаемый в разделе верхнего колонтитула столбца.Gets or sets the text displayed in the header section of the column.

(Унаследовано от DataGridColumn)
IsTrackingViewState

Возвращает значение, которое определяет, отмечается ли объект DataGridColumn, чтобы сохранить его состояние.Gets a value that determines whether the DataGridColumn object is marked to save its state.

(Унаследовано от DataGridColumn)
ItemStyle

Возвращает свойства стиля для ячеек столбца.Gets the style properties for the item cells of the column.

(Унаследовано от DataGridColumn)
ItemTemplate

Получает или задает шаблон для отображения элемента данных в объекте TemplateColumn.Gets or sets the template for displaying a data item in a TemplateColumn object.

Owner

Возвращает элемент управления DataGrid, в который входит данный столбец.Gets the DataGrid control that the column is a member of.

(Унаследовано от DataGridColumn)
SortExpression

Получает или задает имя поля или выражения, передаваемого методу OnSortCommand(DataGridSortCommandEventArgs), когда столбец выбран для сортировки.Gets or sets the name of the field or expression to pass to the OnSortCommand(DataGridSortCommandEventArgs) method when a column is selected for sorting.

(Унаследовано от DataGridColumn)
ViewState

Возвращает объект StateBag, что позволяет столбцу, полученному из класса DataGridColumn, сохранять свои свойства.Gets the StateBag object that allows a column derived from the DataGridColumn class to store its properties.

(Унаследовано от DataGridColumn)
Visible

Получает или задает значение, показывающее, является ли столбец видимым в элементе управления DataGrid.Gets or sets a value that indicates whether the column is visible in the DataGrid control.

(Унаследовано от DataGridColumn)

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
Initialize()

Предоставляет базовую реализацию для сброса столбца, полученного из класса DataGridColumn, в исходное состояние.Provides the base implementation to reset a column derived from the DataGridColumn class to its initial state.

(Унаследовано от DataGridColumn)
InitializeCell(TableCell, Int32, ListItemType)

Вызывает базовый класс объекта TableCell, чтобы инициализировать экземпляр, а затем применяет к ячейке ListItemType.Calls a TableCell object's base class to initialize the instance and then applies a ListItemType to the cell.

LoadViewState(Object)

Загружает состояние объекта DataGridColumn.Loads the state of the DataGridColumn object.

(Унаследовано от DataGridColumn)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
OnColumnChanged()

Вызывает метод OnColumnsChanged().Calls the OnColumnsChanged() method.

(Унаследовано от DataGridColumn)
SaveViewState()

Сохраняет текущее состояние объекта DataGridColumn.Saves the current state of the DataGridColumn object.

(Унаследовано от DataGridColumn)
ToString()

Возвращает строковое представление столбца.Returns the string representation of the column.

(Унаследовано от DataGridColumn)
TrackViewState()

Вызывает отслеживание изменений состояния представления серверного элемента управления для сохранения в объекте StateBag серверного элемента управления.Causes tracking of view-state changes to the server control so they can be stored in the server control's StateBag object.

(Унаследовано от DataGridColumn)

Явные реализации интерфейса

IStateManager.IsTrackingViewState

Возвращает значение, указывающее, отслеживает ли столбец изменения состояния представления.Gets a value that indicates whether the column is tracking view state changes.

(Унаследовано от DataGridColumn)
IStateManager.LoadViewState(Object)

Загружает сохраненное ранее состояние.Loads previously saved state.

(Унаследовано от DataGridColumn)
IStateManager.SaveViewState()

Возвращает объект, содержащий данные об изменении состояния.Returns an object containing state changes.

(Унаследовано от DataGridColumn)
IStateManager.TrackViewState()

Запускает отслеживание изменений состояния.Starts tracking state changes.

(Унаследовано от DataGridColumn)

Применяется к

Дополнительно