TemplateField.FooterTemplate Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает шаблон для отображения нижнего колонтитула объекта TemplateField.
public:
virtual property System::Web::UI::ITemplate ^ FooterTemplate { System::Web::UI::ITemplate ^ get(); void set(System::Web::UI::ITemplate ^ value); };
[System.ComponentModel.Browsable(false)]
[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
[System.Web.UI.TemplateContainer(typeof(System.Web.UI.IDataItemContainer))]
public virtual System.Web.UI.ITemplate FooterTemplate { get; set; }
[<System.ComponentModel.Browsable(false)>]
[<System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)>]
[<System.Web.UI.TemplateContainer(typeof(System.Web.UI.IDataItemContainer))>]
member this.FooterTemplate : System.Web.UI.ITemplate with get, set
Public Overridable Property FooterTemplate As ITemplate
Значение свойства
Реализованный объект ITemplate, содержащий шаблон для отображения нижнего колонтитула объекта TemplateField. Значение по умолчанию — "null
", указывающее, что это свойство не задано.
- Атрибуты
Примеры
В следующем примере кода показано, как использовать FooterTemplate свойство для создания пользовательского шаблона для нижнего TemplateField колонтитула столбца поля в элементе GridView управления. Шаблон отображает сумму значений в столбце TemplateField поля.
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
// Create a variable to store the order total.
private Decimal orderTotal = 0.0M;
void OrderGridView_RowCreated(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Footer)
{
// Get the OrderTotalLabel Label control in the footer row.
Label total = (Label)e.Row.FindControl("OrderTotalLabel");
// Display the grand total of the order formatted as currency.
if (total != null)
{
total.Text = orderTotal.ToString("c");
}
}
}
void OrderGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
// Get the cell that contains the item total.
TableCell cell = e.Row.Cells[2];
// Get the DataBoundLiteralControl control that contains the
// data-bound value.
DataBoundLiteralControl boundControl = (DataBoundLiteralControl)cell.Controls[0];
// Remove the '$' character so that the type converter works properly.
String itemTotal = boundControl.Text.Replace("$", "");
// Add the total for an item (row) to the order total.
orderTotal += Convert.ToDecimal(itemTotal);
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>TemplateField FooterTemplate Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>TemplateField FooterTemplate Example</h3>
<!-- Populate the Columns collection declaratively. -->
<!-- Create a custom TemplateField column that uses -->
<!-- two Label controls to display an author's first and -->
<!-- last name in the same column. -->
<asp:gridview id="OrderGridView"
datasourceid="OrderSqlDataSource"
autogeneratecolumns="False"
showfooter="true"
onrowcreated="OrderGridView_RowCreated"
onrowdatabound="OrderGridView_RowDataBound"
runat="server">
<columns>
<asp:boundfield datafield="UnitPrice"
itemstyle-horizontalalign="Right"
headertext="Unit Price"
dataformatstring="{0:c}"/>
<asp:boundfield datafield="Quantity"
itemstyle-horizontalalign="Right"
headertext="Quantity"/>
<asp:templatefield headertext="Total"
itemstyle-horizontalalign="Right"
footerstyle-horizontalalign="Right"
footerstyle-backcolor="Blue"
footerstyle-forecolor="White">
<itemtemplate>
<%#Eval("Total", "{0:c}") %>
</itemtemplate>
<footertemplate>
<asp:label id="OrderTotalLabel"
runat="server"/>
</footertemplate>
</asp:templatefield>
</columns>
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. -->
<asp:sqldatasource id="OrderSqlDataSource"
selectcommand="SELECT [OrderID], [UnitPrice], [Quantity], [UnitPrice]*[Quantity] As [Total] FROM [order details] WHERE [OrderID]=10248"
connectionstring="server=localhost;database=northwind;integrated security=SSPI"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
<%@ Page language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
' Create a variable to store the order total.
Private orderTotal As Decimal = 0.0
Sub OrderGridView_RowCreated(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.Footer Then
' Get the OrderTotalLabel Label control in the footer row.
Dim total As Label = CType(e.Row.FindControl("OrderTotalLabel"), Label)
' Display the grand total of the order formatted as currency.
If (Not total Is Nothing)
total.Text = orderTotal.ToString("c")
End If
End If
End Sub
Sub OrderGridView_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
' Get the cell that contains the item total.
Dim cell As TableCell = e.Row.Cells(2)
' Get the DataBoundLiteralControl control that contains the
' data bound value.
Dim boundControl As DataBoundLiteralControl = CType(cell.Controls(0), DataBoundLiteralControl)
' Remove the '$' character so that the type converter works properly.
Dim itemTotal As String = boundControl.Text.Replace("$", "")
' Add the total for an item (row) to the order total.
orderTotal += Convert.ToDecimal(itemTotal)
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>TemplateField FooterTemplate Example</title>
</head>
<body>
<form id="form1" runat="server">
<h3>TemplateField FooterTemplate Example</h3>
<!-- Populate the Columns collection declaratively. -->
<!-- Create a custom TemplateField column that uses -->
<!-- two Label controls to display an author's first and -->
<!-- last name in the same column. -->
<asp:gridview id="OrderGridView"
datasourceid="OrderSqlDataSource"
autogeneratecolumns="False"
showfooter="true"
onrowcreated="OrderGridView_RowCreated"
onrowdatabound="OrderGridView_RowDataBound"
runat="server">
<columns>
<asp:boundfield datafield="UnitPrice"
itemstyle-horizontalalign="Right"
headertext="Unit Price"
dataformatstring="{0:c}"/>
<asp:boundfield datafield="Quantity"
itemstyle-horizontalalign="Right"
headertext="Quantity"/>
<asp:templatefield headertext="Total"
itemstyle-horizontalalign="Right"
footerstyle-horizontalalign="Right"
footerstyle-backcolor="Blue"
footerstyle-forecolor="White">
<itemtemplate>
<%#Eval("Total", "{0:c}") %>
</itemtemplate>
<footertemplate>
<asp:label id="OrderTotalLabel"
runat="server"/>
</footertemplate>
</asp:templatefield>
</columns>
</asp:gridview>
<!-- This example uses Microsoft SQL Server and connects -->
<!-- to the Northwind sample database. -->
<asp:sqldatasource id="OrderSqlDataSource"
selectcommand="SELECT [OrderID], [UnitPrice], [Quantity], [UnitPrice]*[Quantity] As [Total] FROM [order details] WHERE [OrderID]=10248"
connectionstring="server=localhost;database=northwind;integrated security=SSPI"
runat="server">
</asp:sqldatasource>
</form>
</body>
</html>
Комментарии
FooterTemplate Используйте свойство, чтобы указать пользовательское содержимое, отображаемое в нижнем колонтитуле TemplateField объекта. Определите содержимое, создав шаблон, указывающий способ отрисовки нижнего колонтитула.
Чтобы указать шаблон, сначала следует открывать и закрывать <FooterTemplate>
теги между открывающим и закрывающим тегами <TemplateField>
элемента. Затем добавьте пользовательское содержимое между открывающим и закрывающим <FooterTemplate>
тегами. Содержимое может быть таким же простым, как обычный текст или более сложным (например, внедрение других элементов управления в шаблон).
Для программного доступа к элементу управления, определенному в шаблоне, сначала определите, какой TableCell объект в элементе управления с привязкой к данным содержит элемент управления. Затем используйте Controls коллекцию TableCell объекта для доступа к элементу управления. Можно также использовать FindControl метод TableCell объекта для поиска элемента управления, если элемент управления имеет указанное ID свойство.