FormViewCommandEventHandler デリゲート
アセンブリ: System.Web (system.web.dll 内)

Public Delegate Sub FormViewCommandEventHandler ( _ sender As Object, _ e As FormViewCommandEventArgs _ )
/** @delegate */ public delegate void FormViewCommandEventHandler ( Object sender, FormViewCommandEventArgs e )

ItemCommand イベントは、FormView コントロール内のボタン コントロールがクリックされた場合に発生します。これにより、このイベントが発生するたびにカスタム ルーチンを実行するイベント処理メソッドを提供できます。
FormView コントロール内のボタンから、コントロールの組み込み機能の一部を呼び出すこともできます。これらのいずれかの操作を実行するには、ボタンの CommandName プロパティを次の表の値のいずれかに設定します。
CommandName 値 | |
---|---|
"Cancel" | 編集操作または挿入操作をキャンセルし、FormView コントロールを DefaultMode プロパティで指定されたモードに戻します。ModeChanged イベントおよび ModeChanging イベントを発生させます。 |
"Delete" | |
"Edit" | FormView コントロールを編集モードにします。ModeChanged イベントおよび ModeChanging イベントを発生させます。 |
"Insert" | 現在のレコードをデータ ソースに挿入します。ItemInserted イベントおよび ItemInserting イベントを発生させます。 |
"New" | FormView コントロールを挿入モードにします。ModeChanged イベントおよび ModeChanging イベントを発生させます。 |
"Page" | ページング操作を実行します。ボタンの CommandArgument プロパティを "First"、"Last"、"Next"、"Prev"、またはページ番号に設定して、実行するページング操作の種類を指定します。PageIndexChanged イベントおよび PageIndexChanging イベントを発生させます。 |
"Update" | 現在のレコードをデータ ソースで更新します。ItemUpdated イベントおよび ItemUpdating イベントを発生させます。 |
前述の表に示されているボタンがクリックされると ItemCommand イベントが発生しますが、表に示されているイベントを処理して操作を行うことをお勧めします。
FormViewCommandEventHandler デリゲートを作成する場合は、イベントを処理するメソッドを識別してください。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「イベントとデリゲート」を参照してください。

FormViewCommandEventHandler デリゲートを、プログラムによって FormView コントロールの ItemCommand イベントに追加する方法を次の例に示します。
<%@ page language="VB" %> <%@ import namespace="System.Data"%> <script runat="server"> ' To dynamically create a template for a FormView control, ' you must create a custom template class to represent ' the template. This template class represents the item ' template for a FormView control. Private NotInheritable Class EmployeeTemplate Implements ITemplate ' When implementing the ITemplate interface, you must ' implement the InstantiateIn method. The FormView ' control calls this method to create the template's ' content. Sub InstantiateIn(ByVal container As Control) Implements ITemplate.InstantiateIn ' Create the child controls contained in the template. ' For this example, the item template displays the ' FirstName and LastName fields from the data source. ' To support data-binding, create event handlers ' for the DataBinding event of each child control. ' The event handlers must bind the appropriate value ' to each control. Dim firstNameLabel As New Label() firstNameLabel.ID = "FirstNameLabel" AddHandler firstNameLabel.DataBinding, AddressOf FirstNameLabel_DataBinding Dim nameLineBreak As New LiteralControl("<br/>") Dim buttonLineBreak As New LiteralControl("<br/>") Dim lastNameLabel As New Label() lastNameLabel.ID = "LastNameLabel" AddHandler lastNameLabel.DataBinding, AddressOf LastNameLabel_DataBinding ' Create a custom button control to display in the item ' template. When a button within a FormView control is ' clicked, the ItemCommand event is raised. The ItemCommand ' event is used to handle the clicking of this button. Dim displayButton As New Button() displayButton.ID = "AddButton" displayButton.CommandName = "Display" displayButton.Text = "Display Employee" ' Add the controls to the Controls collection of the ' container control. container.Controls.Add(firstNameLabel) container.Controls.Add(nameLineBreak) container.Controls.Add(lastNameLabel) container.Controls.Add(buttonLineBreak) container.Controls.Add(displayButton) End Sub ' This event handler binds the value of the FirstName field ' to the FirstNameLabel Label control displayed in the template. Private Sub FirstNameLabel_DataBinding(ByVal sender As Object, ByVal e As EventArgs) ' Use the sender parameter to retrieve the Label control ' being bound to data. Dim firstNameLabelControl As Label = CType(sender, Label) ' Retrieve the value to bind to the Label control. First, ' use the NamingContainer property to retrieve the parent ' control of the Label control. In this example, the parent ' control is the FormView control. Dim formViewContainer As FormView = CType(firstNameLabelControl.NamingContainer, FormView) ' Get the data item bound to the FormView control. Dim rowView As DataRowView = CType(formViewContainer.DataItem, DataRowView) ' Use the data item to retrieve the value of the FirstName field. ' Set the Text property of the Label control to this value. firstNameLabelControl.Text = rowView("FirstName").ToString() End Sub ' This event handler binds the value of the LastName field ' to the LastNameLabel Label control displayed in the template. Private Sub LastNameLabel_DataBinding(ByVal sender As Object, ByVal e As EventArgs) ' Use the sender parameter to retrieve the Label control ' being bound to data. Dim lastNameLabelControl As Label = CType(sender, Label) ' Retrieve the value to bind to the Label control. First, ' use the NamingContainer property to retrieve the parent ' control of the Label control. In this example, the parent ' control is the FormView control. Dim formViewContainer As FormView = CType(lastNameLabelControl.NamingContainer, FormView) ' Get the data item bound to the FormView control. Dim rowView As DataRowView = CType(formViewContainer.DataItem, DataRowView) ' Use the data item to retrieve the value of the LastName field. ' Set the Text property of the Label control to this value. lastNameLabelControl.Text = rowView("LastName").ToString() End Sub End Class Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) ' Create a new FormView object. Dim employeesFormView As New FormView() ' Set the FormView object's properties. employeesFormView.ID = "EmployeesFormView" employeesFormView.DataSourceID = "EmployeeSource" employeesFormView.AllowPaging = True employeesFormView.HeaderText = "Employee Name" ' Programmatically register the event handlers for the ' FormView control. AddHandler employeesFormView.ItemCommand, AddressOf EmployeesFormView_ItemCommand AddHandler employeesFormView.PageIndexChanged, AddressOf EmployeesFormView_PageIndexChanged ' Create the dynamic template using the custom template class. employeesFormView.ItemTemplate = New EmployeeTemplate() ' Add the FormView object to the Controls collection ' of the PlaceHolder control. FormViewPlaceHolder.Controls.Add(employeesFormView) End Sub Sub EmployeesFormView_ItemCommand(ByVal sender As Object, ByVal e As FormViewCommandEventArgs) ' The ItemCommand event is raised when any button within ' the FormView control is clicked. Use the CommandName property ' to determine which button was clicked. If e.CommandName = "Display" Then ' Use the sender parameter to get the FormView control ' that contains the button clicked. Dim employeesFormView As FormView = CType(sender, FormView) ' Use the Row property to retrieve the data row. Dim row As FormViewRow = employeesFormView.Row ' Retrieve the FirstNameLabel and LastNameLabel Label controls ' from the data row. Dim firstNameLabel As Label = CType(row.FindControl("FirstNameLabel"), Label) Dim lastNameLabel As Label = CType(row.FindControl("LastNameLabel"), Label) If firstNameLabel IsNot Nothing And lastNameLabel IsNot Nothing Then ' Display the employee's name. MessageLabel.Text = firstNameLabel.Text & " " & _ lastNameLabel.Text() End If End If End Sub Sub EmployeesFormView_PageIndexChanged(ByVal sender As Object, ByVal e As EventArgs) ' Clear the message label when the user navigates to ' a different record. MessageLabel.Text = "" End Sub </script> <html> <body> <form runat="server"> <h3>FormViewCommandEventHandler Example</h3> <!-- Use a PlaceHolder control as the container for the --> <!-- dynamically generated FormView control. --> <asp:placeholder id="FormViewPlaceHolder" runat="server"/> <br/><br/> <asp:label id="MessageLabel" forecolor="Red" runat="server"/> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="EmployeeSource" selectcommand="Select [EmployeeID], [LastName], [FirstName] From [Employees]" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </form> </body> </html>
<%@ page language="C#" %> <%@ import namespace="System.Data"%> <script runat="server"> // To dynamically create a template for a FormView control, // you must create a custom template class to represent // the template. This template class represents the item // template for a FormView control. private sealed class EmployeeTemplate : ITemplate { // When implementing the ITemplate interface, you must // implement the InstantiateIn method. The FormView // control calls this method to create the template's // content. void ITemplate.InstantiateIn(Control container) { // Create the child controls contained in the template. // For this example, the item template displays the // FirstName and LastName fields from the data source. // To support data binding, create event handlers // for the DataBinding event of each child control. // The event handlers must bind the appropriate value // to each control. Label firstNameLabel = new Label(); firstNameLabel.ID = "FirstNameLabel"; firstNameLabel.DataBinding += new EventHandler(FirstNameLabel_DataBinding); LiteralControl nameLineBreak = new LiteralControl("<br/>"); LiteralControl buttonLineBreak = new LiteralControl("<br/>"); Label lastNameLabel = new Label(); lastNameLabel.ID = "LastNameLabel"; lastNameLabel.DataBinding += new EventHandler(LastNameLabel_DataBinding); // Create a custom button control to display in the item // template. When a button within a FormView control is // clicked, the ItemCommand event is raised. The ItemCommand // event is used to handle the clicking of this button. Button displayButton = new Button(); displayButton.ID = "AddButton"; displayButton.CommandName = "Display"; displayButton.Text = "Display Employee"; // Add the controls to the Controls collection of the // container control. container.Controls.Add(firstNameLabel); container.Controls.Add(nameLineBreak); container.Controls.Add(lastNameLabel); container.Controls.Add(buttonLineBreak); container.Controls.Add(displayButton); } // This event handler binds the value of the FirstName field // to the FirstNameLabel Label control displayed in the template. private void FirstNameLabel_DataBinding(Object sender, EventArgs e) { // Use the sender parameter to retrieve the Label control // being bound to data. Label firstNameLabelControl = (Label)sender; // Retrieve the value to bind to the Label control. First, // use the NamingContainer property to retrieve the parent // control of the Label control. In this example, the parent // control is the FormView control. FormView formViewContainer = (FormView)firstNameLabelControl.NamingContainer; // Get the data item bound to the FormView control. DataRowView rowView = (DataRowView)formViewContainer.DataItem; // Use the data item to retrieve the value of the FirstName field. // Set the Text property of the Label control to this value. firstNameLabelControl.Text = rowView["FirstName"].ToString(); } // This event handler binds the value of the LastName field // to the LastNameLabel Label control displayed in the template. private void LastNameLabel_DataBinding(Object sender, EventArgs e) { // Use the sender parameter to retrieve the Label control // being bound to data. Label lastNameLabelControl = (Label)sender; // Retrieve the value to bind to the Label control. First, // use the NamingContainer property to retrieve the parent // control of the Label control. In this example, the parent // control is the FormView control. FormView formViewContainer = (FormView)lastNameLabelControl.NamingContainer; // Get the data item bound to the FormView control. DataRowView rowView = (DataRowView)formViewContainer.DataItem; // Use the data item to retrieve the value of the LastName field. // Set the Text property of the Label control to this value. lastNameLabelControl.Text = rowView["LastName"].ToString(); } } void Page_Load(Object sender, EventArgs e) { // Create a new FormView object. FormView employeesFormView = new FormView(); // Set the FormView object's properties. employeesFormView.ID = "EmployeesFormView"; employeesFormView.DataSourceID = "EmployeeSource"; employeesFormView.AllowPaging = true; employeesFormView.HeaderText = "Employee Name"; // Programmatically register the event handlers for the // FormView control. employeesFormView.ItemCommand += new FormViewCommandEventHandler(EmployeesFormView_ItemCommand); employeesFormView.PageIndexChanged += new EventHandler(EmployeesFormView_PageIndexChanged); // Create the dynamic template using the custom template class. employeesFormView.ItemTemplate = new EmployeeTemplate(); // Add the FormView object to the Controls collection // of the PlaceHolder control. FormViewPlaceHolder.Controls.Add(employeesFormView); } void EmployeesFormView_ItemCommand(Object sender, FormViewCommandEventArgs e) { // The ItemCommand event is raised when any button within // the FormView control is clicked. Use the CommandName property // to determine which button was clicked. if (e.CommandName == "Display") { // Use the sender parameter to get the FormView control // that contains the button clicked. FormView employeesFormView = (FormView)sender; // Use the Row property to retrieve the data row. FormViewRow row = employeesFormView.Row; // Retrieve the FirstNameLabel and LastNameLabel Label controls // from the data row. Label firstNameLabel = (Label)row.FindControl("FirstNameLabel"); Label lastNameLabel = (Label)row.FindControl("LastNameLabel"); if (firstNameLabel != null && lastNameLabel != null) { // Display the employee's name. MessageLabel.Text = firstNameLabel.Text + " " + lastNameLabel.Text; } } } void EmployeesFormView_PageIndexChanged(Object sender, EventArgs e) { // Clear the message label when the user navigates to // a different record. MessageLabel.Text = ""; } </script> <html> <body> <form runat="server"> <h3>FormViewCommandEventHandler Example</h3> <!-- Use a PlaceHolder control as the container for the --> <!-- dynamically generated FormView control. --> <asp:placeholder id="FormViewPlaceHolder" runat="server"/> <br/><br/> <asp:label id="MessageLabel" forecolor="Red" runat="server"/> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="EmployeeSource" selectcommand="Select [EmployeeID], [LastName], [FirstName] From [Employees]" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </form> </body> </html>
FormViewCommandEventHandler デリゲートを、宣言によって FormView コントロールの ItemCommand イベントに追加する方法を次の例に示します。
<%@ page language="VB" %> <%@ import namespace="System.Data"%> <script runat="server"> Sub EmployeesFormView_ItemCommand(ByVal sender As Object, ByVal e As FormViewCommandEventArgs) Handles EmployeesFormView.ItemCommand ' The ItemCommand event is raised when any button within ' the FormView control is clicked. Use the CommandName property ' to determine which button was clicked. If e.CommandName = "Display" Then ' Use the Row property to retrieve the data row. Dim row As FormViewRow = EmployeesFormView.Row ' Retrieve the FirstNameLabel and LastNameLabel Label controls ' from data row. Dim firstNameLabel As Label = CType(row.FindControl("FirstNameLabel"), Label) Dim lastNameLabel As Label = CType(row.FindControl("LastNameLabel"), Label) If firstNameLabel IsNot Nothing And lastNameLabel IsNot Nothing Then ' Display the employee's name. MessageLabel.Text = firstNameLabel.Text & " " & _ lastNameLabel.Text() End If End If End Sub Sub EmployeesFormView_PageIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles EmployeesFormView.PageIndexChanged ' Clear the message label when the user navigates to ' a different record. MessageLabel.Text = "" End Sub </script> <html> <body> <form runat="server"> <h3>FormViewCommandEventHandler Example</h3> <!-- Use a PlaceHolder control as the container for the --> <!-- dynamically generated FormView control. --> <asp:formview id="EmployeesFormView" datasourceid="EmployeeSource" allowpaging="True" headertext="Employee Name" runat="server"> <itemtemplate> <asp:label id="FirstNameLabel" text='<%# Eval("FirstName") %>' runat="server"/> <br/> <asp:label id="LastNameLabel" text='<%# Eval("LastName") %>' runat="server"/> <br/> <asp:button id="DisplayButton" text="Display Employee" commandname="Display" runat="server"/> </itemtemplate> </asp:formview> <br/><br/> <asp:label id="MessageLabel" forecolor="Red" runat="server"/> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="EmployeeSource" selectcommand="Select [EmployeeID], [LastName], [FirstName] From [Employees]" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </form> </body> </html>
<%@ page language="C#" %> <%@ import namespace="System.Data"%> <script runat="server"> void EmployeesFormView_ItemCommand(Object sender, FormViewCommandEventArgs e) { // The ItemCommand event is raised when any button within // the FormView control is clicked. Use the CommandName property // to determine which button was clicked. if (e.CommandName == "Display") { // Use the Row property to retrieve the data row. FormViewRow row = EmployeesFormView.Row; // Retrieve the FirstNameLabel and LastNameLabel Label controls // from data row. Label firstNameLabel = (Label)row.FindControl("FirstNameLabel"); Label lastNameLabel = (Label)row.FindControl("LastNameLabel"); if (firstNameLabel != null && lastNameLabel != null) { // Display the employee's name. MessageLabel.Text = firstNameLabel.Text + " " + lastNameLabel.Text; } } } void EmployeesFormView_PageIndexChanged(Object sender, EventArgs e) { // Clear the message label when the user navigates to // a different record. MessageLabel.Text = ""; } </script> <html> <body> <form runat="server"> <h3>FormViewCommandEventHandler Example</h3> <!-- Use a PlaceHolder control as the container for the --> <!-- dynamically generated FormView control. --> <asp:formview id="EmployeesFormView" datasourceid="EmployeeSource" allowpaging="True" headertext="Employee Name" onitemcommand="EmployeesFormView_ItemCommand" onpageindexchanged="EmployeesFormView_PageIndexChanged" runat="server"> <itemtemplate> <asp:label id="FirstNameLabel" text='<%# Eval("FirstName") %>' runat="server"/> <br/> <asp:label id="LastNameLabel" text='<%# Eval("LastName") %>' runat="server"/> <br/> <asp:button id="DisplayButton" text="Display Employee" commandname="Display" runat="server"/> </itemtemplate> </asp:formview> <br/><br/> <asp:label id="MessageLabel" forecolor="Red" runat="server"/> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. Use an ASP.NET --> <!-- expression to retrieve the connection string value --> <!-- from the Web.config file. --> <asp:sqldatasource id="EmployeeSource" selectcommand="Select [EmployeeID], [LastName], [FirstName] From [Employees]" connectionstring="<%$ ConnectionStrings:NorthWindConnectionString%>" runat="server"/> </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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


System.Web.UI.WebControls 名前空間
FormView クラス
FormView.ItemCommand イベント
OnItemCommand
FormViewCommandEventArgs クラス
CommandEventArgs クラス
FormView.ItemDeleted イベント
FormView.ItemDeleting イベント
FormView.ItemInserted イベント
FormView.ItemInserting イベント
FormView.ItemUpdated イベント
FormView.ItemUpdating イベント
FormView.PageIndexChanged イベント
FormView.PageIndexChanging イベント
その他の技術情報
イベントとデリゲート
- FormViewCommandEventHandler デリゲートのページへのリンク