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 класс для создания столбца в элементе 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 управления, чтобы создать столбец с настраиваемым макетом элемента управления. Можно указать пользовательский внешний вид для раздела заголовка, нижнего колонтитула и раздела элементов столбца с помощью HeaderTemplateсвойств и ItemTemplate свойств FooterTemplateсоответственно. Вы также можете управлять отображением редактируемого элемента в объекте 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) |