TemplateColumn 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 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 、 FooterTemplate 和 ItemTemplate 屬性,提供標題區段、頁尾區段和資料行專案區段的自訂外觀。 您也可以藉由設定 EditItemTemplate 屬性,控制正在編輯的專案在 物件中的 TemplateColumn 顯示方式。
建構函式
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() |
導致對伺服器控制項的檢視狀態變更的追蹤 (Tracking),以便它們能夠儲存於伺服器控制項的 StateBag 物件。 (繼承來源 DataGridColumn) |
明確介面實作
IStateManager.IsTrackingViewState |
取得值,指出資料行是否正在追蹤 (Tracking) 檢視狀態變更。 (繼承來源 DataGridColumn) |
IStateManager.LoadViewState(Object) |
載入先前儲存的狀態。 (繼承來源 DataGridColumn) |
IStateManager.SaveViewState() |
傳回包含狀態變更的物件。 (繼承來源 DataGridColumn) |
IStateManager.TrackViewState() |
啟動追蹤狀態的變更。 (繼承來源 DataGridColumn) |