TemplateField コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


このコンストラクタを使用して、TemplateField クラスの新しいインスタンスを初期化します。通常、このコンストラクタは、動的に作成されたデータ バインド コントロールにフィールドを追加する場合に使用されます。
TemplateField オブジェクトをデータ バインド コントロールに動的に追加するには、新しい TemplateField オブジェクトを作成して適切なテンプレートを定義し、データ バインド コントロールのフィールド コレクションに追加します。たとえば、GridView コントロールを使用する場合は、TemplateField オブジェクトを Columns コレクションに追加します。
![]() |
---|
フィールドはデータ バインド コントロールに動的に追加することもできますが、フィールドを静的に宣言しておき、適宜、表示または非表示にすることをお勧めします。フィールドをすべて静的に宣言すると、親データ バインド コントロールのビューステートのサイズを削減できます。 |

コンストラクタを使用して、TemplateField フィールド列を GridView コントロールに動的に追加する方法を次のコード例に示します。
<%@ Page language="VB" %> <script runat="server"> ' Create a template class to represent a dynamic template column. Public Class GridViewTemplate Implements ITemplate Private templateType As DataControlRowType Private columnName As String Sub New(ByVal type As DataControlRowType, ByVal colname As String) templateType = type columnName = colname End Sub Sub InstantiateIn(ByVal container As System.Web.UI.Control) _ Implements ITemplate.InstantiateIn ' Create the content for the different row types. Select Case templateType Case DataControlRowType.Header ' Create the controls to put in the header ' section and set their properties. Dim lc As New Literal lc.Text = "<B>" & columnName & "</B>" ' Add the controls to the Controls collection ' of the container. container.Controls.Add(lc) Case DataControlRowType.DataRow ' Create the controls to put in a data row ' section and set their properties. Dim firstName As New Label Dim lastName As New Label Dim spacer = New Literal spacer.Text = " " ' To support data binding, register the event-handling methods ' to perform the data binding. Each control needs its own event ' handler. AddHandler firstName.DataBinding, AddressOf FirstName_DataBinding AddHandler lastName.DataBinding, AddressOf LastName_DataBinding ' Add the controls to the Controls collection ' of the container. container.Controls.Add(firstName) container.Controls.Add(spacer) container.Controls.Add(lastName) ' Insert cases to create the content for the other ' row types, if desired. Case Else ' Insert code to handle unexpected values. End Select End Sub Private Sub FirstName_DataBinding(ByVal sender As Object, ByVal e As EventArgs) ' Get the Label control to bind the value. The Label control ' is contained in the object that raised the DataBinding ' event (the sender parameter). Dim l As Label = CType(sender, Label) ' Get the GridViewRow object that contains the Label control. Dim row As GridViewRow = CType(l.NamingContainer, GridViewRow) ' Get the field value from the GridViewRow object and ' assign it to the Text property of the Label control. l.Text = DataBinder.Eval(row.DataItem, "au_fname").ToString() End Sub Private Sub LastName_DataBinding(ByVal sender As Object, ByVal e As EventArgs) ' Get the Label control to bind the value. The Label control ' is contained in the object that raised the DataBinding ' event (the sender parameter). Dim l As Label = CType(sender, Label) ' Get the GridViewRow object that contains the Label control. Dim row As GridViewRow = CType(l.NamingContainer, GridViewRow) ' Get the field value from the GridViewRow object and ' assign it to the Text property of the Label control. l.Text = DataBinder.Eval(row.DataItem, "au_lname").ToString() End Sub End Class Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) ' The field columns need to be created only when the page is ' first loaded. If Not IsPostBack Then ' Dynamically create field columns to display the desired ' fields from the data source. Create a TemplateField object ' to display an author's first and last name. Dim customField As New TemplateField ' Create the dynamic templates and assign them to ' the appropriate template property. customField.ItemTemplate = New GridViewTemplate(DataControlRowType.DataRow, "Author Name") customField.HeaderTemplate = New GridViewTemplate(DataControlRowType.Header, "Author Name") ' Add the field column to the Columns collection of the ' GridView control. AuthorsGridView.Columns.Add(customField) End If End Sub </script> <html> <body> <form runat="server"> <h3>TemplateField Constructor Example</h3> <asp:gridview id="AuthorsGridView" datasourceid="AuthorsSqlDataSource" autogeneratecolumns="False" runat="server"> </asp:gridview> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Pubs sample database. --> <asp:sqldatasource id="AuthorsSqlDataSource" selectcommand="SELECT [au_fname], [au_lname] FROM [authors]" connectionstring="server=localhost;database=pubs;integrated security=SSPI" runat="server"> </asp:sqldatasource> </form> </body> </html>
<%@ Page language="C#" %> <script runat="server"> // Create a template class to represent a dynamic template column. public class GridViewTemplate : ITemplate { private DataControlRowType templateType; private string columnName; public GridViewTemplate(DataControlRowType type, string colname) { templateType = type; columnName = colname; } public void InstantiateIn(System.Web.UI.Control container) { // Create the content for the different row types. switch(templateType) { case DataControlRowType.Header: // Create the controls to put in the header // section and set their properties. Literal lc = new Literal(); lc.Text = "<B>" + columnName + "</B>"; // Add the controls to the Controls collection // of the container. container.Controls.Add(lc); break; case DataControlRowType.DataRow: // Create the controls to put in a data row // section and set their properties. Label firstName = new Label(); Label lastName = new Label(); Literal spacer = new Literal(); spacer.Text = " "; // To support data binding, register the event-handling methods // to perform the data binding. Each control needs its own event // handler. firstName.DataBinding += new EventHandler(this.FirstName_DataBinding); lastName.DataBinding += new EventHandler(this.LastName_DataBinding); // Add the controls to the Controls collection // of the container. container.Controls.Add(firstName); container.Controls.Add (spacer); container.Controls.Add(lastName); break; // Insert cases to create the content for the other // row types, if desired. default: // Insert code to handle unexpected values. break; } } private void FirstName_DataBinding(Object sender, EventArgs e) { // Get the Label control to bind the value. The Label control // is contained in the object that raised the DataBinding // event (the sender parameter). Label l = (Label)sender; // Get the GridViewRow object that contains the Label control. GridViewRow row = (GridViewRow)l.NamingContainer; // Get the field value from the GridViewRow object and // assign it to the Text property of the Label control. l.Text = DataBinder.Eval(row.DataItem, "au_fname").ToString(); } private void LastName_DataBinding(Object sender, EventArgs e) { // Get the Label control to bind the value. The Label control // is contained in the object that raised the DataBinding // event (the sender parameter). Label l = (Label)sender; // Get the GridViewRow object that contains the Label control. GridViewRow row = (GridViewRow)l.NamingContainer; // Get the field value from the GridViewRow object and // assign it to the Text property of the Label control. l.Text = DataBinder.Eval(row.DataItem, "au_lname").ToString(); } } void Page_Load(Object sender, EventArgs e) { // The field columns need to be created only when the page is // first loaded. if (!IsPostBack) { // Dynamically create field columns to display the desired // fields from the data source. Create a TemplateField object // to display an author's first and last name. TemplateField customField = new TemplateField(); // Create the dynamic templates and assign them to // the appropriate template property. customField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "Author Name"); customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, "Author Name"); // Add the field column to the Columns collection of the // GridView control. AuthorsGridView.Columns.Add(customField); } } </script> <html> <body> <form runat="server"> <h3>TemplateField Constructor Example</h3> <asp:gridview id="AuthorsGridView" datasourceid="AuthorsSqlDataSource" autogeneratecolumns="False" runat="server"> </asp:gridview> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Pubs sample database. --> <asp:sqldatasource id="AuthorsSqlDataSource" selectcommand="SELECT [au_fname], [au_lname] FROM [authors]" connectionstring="server=localhost;database=pubs;integrated security=SSPI" runat="server"> </asp:sqldatasource> </form> </body> </html>

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- TemplateField コンストラクタのページへのリンク