TemplateColumn Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
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) |