Поделиться через


TemplateColumn Класс

Определение

Представляет тип столбца для DataGrid элемента управления, который позволяет настроить макет элементов управления в столбце.

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 управления с пользовательским макетом.


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

Комментарии

TemplateColumn Используйте тип столбца в элементе DataGrid управления для создания столбца с настраиваемым макетом элемента управления. Можно указать настраиваемый внешний вид для раздела заголовка, нижнего колонтитула и раздела элементов столбца с помощью HeaderTemplateFooterTemplateпараметров и ItemTemplate свойств соответственно. Вы также можете контролировать, как редактируемый элемент отображается в объекте TemplateColumn , задав EditItemTemplate свойство.

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

Имя Описание
TemplateColumn()

Инициализирует новый экземпляр класса TemplateColumn.

Свойства

Имя Описание
DesignMode

Возвращает значение, указывающее, находится ли столбец в режиме конструктора.

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

Возвращает или задает шаблон для отображения элемента, выбранного для редактирования в объекте TemplateColumn .

FooterStyle

Возвращает свойства стиля для нижнего колонтитула столбца.

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

Возвращает или задает шаблон для отображения нижнего TemplateColumn колонтитула объекта.

FooterText

Возвращает или задает текст, отображаемый в нижнем колонтитуле столбца.

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

Возвращает или задает расположение изображения, отображаемого в разделе заголовка столбца.

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

Возвращает свойства стиля для раздела заголовка столбца.

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

Возвращает или задает шаблон для отображения раздела заголовка TemplateColumn объекта.

HeaderText

Возвращает или задает текст, отображаемый в разделе заголовка столбца.

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

Возвращает значение, определяющее, помечен ли DataGridColumn объект для сохранения состояния.

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

Возвращает свойства стиля для ячеек элемента столбца.

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

Возвращает или задает шаблон для отображения элемента данных в объекте TemplateColumn .

Owner

DataGrid Возвращает элемент управления, в который входит столбец.

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

Возвращает или задает имя поля или выражения, передаваемого OnSortCommand(DataGridSortCommandEventArgs) методу при выборе столбца для сортировки.

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

Возвращает объект, позволяющий столбцу StateBag , производным от DataGridColumn класса, хранить его свойства.

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

Возвращает или задает значение, указывающее, отображается ли столбец в элементе DataGrid управления.

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

Методы

Имя Описание
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

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

Служит хэш-функцией по умолчанию.

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

Возвращает Type текущего экземпляра.

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

Предоставляет базовую реализацию для сброса столбца, полученного DataGridColumn из класса в исходное состояние.

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

Вызывает базовый TableCell класс объекта для инициализации экземпляра, а затем применяется ListItemType к ячейке.

LoadViewState(Object)

Загружает состояние DataGridColumn объекта.

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

Создает неглубокую копию текущей Object.

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

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

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

Сохраняет текущее состояние DataGridColumn объекта.

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

Возвращает строковое представление столбца.

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

Вызывает отслеживание изменений состояния представления в серверном элементе управления, чтобы они могли храниться в объекте серверного элемента управления StateBag .

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

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

Имя Описание
IStateManager.IsTrackingViewState

Возвращает значение, указывающее, изменяется ли столбец в режиме отслеживания состояния.

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

Загружает ранее сохраненное состояние.

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

Возвращает объект, содержащий изменения состояния.

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

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

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

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

См. также раздел