SqlDataSourceCommandEventArgs クラス
アセンブリ: System.Web (system.web.dll 内)
 構文
構文 解説
解説イベント ハンドラ デリゲートを追加して、Updating、Inserting、Deleting の各イベントを処理することにより、別途プリプロセスを実行したり、データベース コマンドそのものをキャンセルしたりできます。
SqlDataSourceCommandEventArgs クラスは CancelEventArgs クラスから派生しているため、Cancel プロパティを true に設定することによって、保留中の SqlDataSource データベース コマンドをキャンセルできます。Command プロパティが公開している DbCommand オブジェクトにアクセスすることで、コマンドを実行する前に、CommandText、Parameters コレクション、および、その他のコマンド プロパティをチェックし、必要に応じてプロパティを操作できます。
SqlDataSourceCommandEventArgs クラスを、OnUpdating メソッド、OnInserting メソッド、および OnDeleting メソッドで使用することにより、SqlDataSource データベース コマンドに実行前にアクセスできます。SqlDataSource コントロールは、データ操作の過程で、基になるデータ オブジェクトを操作する際に利用できる、数多くのイベントを公開しています。次の表は、SqlDataSource コントロールを使用したデータ操作の一連の流れに対応するさまざまなイベントをわかりやすく紹介するために、各種のイベントと、個々のイベントに対応する EventArgs、およびイベント ハンドラ クラスをまとめたものです。
| SqlDataSourceSelectingEventArgs | SqlDataSourceSelectingEventHandler | |
| Inserting、Updating、および、Deleting は、それぞれ、挿入、更新、削除の各操作が実行される前に発生します。 | SqlDataSourceCommandEventArgs | SqlDataSourceCommandEventHandler | 
| Selected、Inserted、Updated、Deleted は、それぞれ、データの取得、挿入、更新、削除の各操作が完了した後で発生します。 | SqlDataSourceStatusEventArgs | SqlDataSourceStatusEventHandler | 
 使用例
使用例DropDownList コントロールで、Microsoft SQL Server データベースから取得したデータを表示し、TextBox コントロールを使用してレコードを更新する方法を次のコード例に示します。この例は、SqlDataSource コントロールを使用したデータの更新時に、DbTransaction オブジェクトを使用してトランザクションのコンテキストを追加する方法を示しています。
<%@Page Language="VB" %> <%@Import Namespace="System.Data" %> <%@Import Namespace="System.Data.Common" %> <%@Import Namespace="System.Diagnostics" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <SCRIPT runat="server"> Sub On_Click(ByVal source As Object, ByVal e As EventArgs) SqlDataSource1.Update() End Sub 'On_Click Sub On_Sql_Updating(ByVal source As Object, ByVal e As SqlDataSourceCommandEventArgs) Dim command as DbCommand Dim connection as DbConnection Dim transaction as DbTransaction command = e.Command connection = command.Connection connection.Open() transaction = connection.BeginTransaction() command.Transaction = transaction End Sub 'On_Sql_Updating Sub On_Sql_Updated(ByVal source As Object, ByVal e As SqlDataSourceStatusEventArgs) Dim command As DbCommand Dim transaction As DbTransaction command = e.Command transaction = command.Transaction ' In this code example the OtherProcessSucceeded variable represents ' the outcome of some other process that occurs whenever the data is ' updated, and must succeed for the data change to be committed. For ' simplicity, we set this value to true. Dim OtherProcessSucceeded as Boolean = True If (OtherProcessSucceeded) Then transaction.Commit() Label2.Text="The record was updated successfully!" Else transaction.Rollback() Label2.Text="The record was not updated." End If End Sub ' On_Sql_Updated </SCRIPT> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" SelectCommand="SELECT EmployeeID, LastName, Address FROM Employees" UpdateCommand="UPDATE Employees SET Address=@Address WHERE EmployeeID=@EmployeeID" OnUpdating="On_Sql_Updating" OnUpdated ="On_Sql_Updated"> <UpdateParameters> <asp:ControlParameter Name="Address" ControlId="TextBox1" PropertyName="Text"/> <asp:ControlParameter Name="EmployeeID" ControlId="DropDownList1" PropertyName="SelectedValue"/> </UpdateParameters> </asp:SqlDataSource> <asp:DropDownList id="DropDownList1" runat="server" DataTextField="LastName" DataValueField="EmployeeID" DataSourceID="SqlDataSource1"> </asp:DropDownList> <P> <asp:Label id="Label1" runat="server" Text="Enter a new address for the selected user." /> <asp:TextBox id="TextBox1" runat="server" /> <asp:Button id="Submit" runat="server" Text="Submit" OnClick="On_Click" /> <P><asp:Label id="Label2" runat="server" Text="" /> </FORM> </BODY> </HTML>
<%@Page Language="C#" %> <%@Import Namespace="System.Data" %> <%@Import Namespace="System.Data.Common" %> <%@Import Namespace="System.Data.SqlClient" %> <%@Import Namespace="System.Diagnostics" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <SCRIPT runat="server"> private void On_Click(Object source, EventArgs e) { SqlDataSource1.Update(); } private void OnSqlUpdating(Object source, SqlDataSourceCommandEventArgs e) { DbCommand command = e.Command; DbConnection cx = command.Connection; cx.Open(); DbTransaction tx = cx.BeginTransaction(); command.Transaction = tx; } private void OnSqlUpdated(Object source, SqlDataSourceStatusEventArgs e) { DbCommand command = e.Command; DbTransaction tx = command.Transaction; // In this code example the OtherProcessSucceeded variable represents // the outcome of some other process that occurs whenever the data is // updated, and must succeed for the data change to be committed. For // simplicity, we set this value to true. bool OtherProcessSucceeded = true; if (OtherProcessSucceeded) { tx.Commit(); Label2.Text="The record was updated successfully!"; } else { tx.Rollback(); Label2.Text="The record was not updated."; } } </SCRIPT> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" SelectCommand="SELECT EmployeeID, LastName, Address FROM Employees" UpdateCommand="UPDATE Employees SET Address=@Address WHERE EmployeeID=@EmployeeID" OnUpdating="OnSqlUpdating" OnUpdated ="OnSqlUpdated"> <UpdateParameters> <asp:ControlParameter Name="Address" ControlId="TextBox1" PropertyName="Text"/> <asp:ControlParameter Name="EmployeeID" ControlId="DropDownList1" PropertyName="SelectedValue"/> </UpdateParameters> </asp:SqlDataSource> <asp:DropDownList id="DropDownList1" runat="server" DataTextField="LastName" DataValueField="EmployeeID" DataSourceID="SqlDataSource1"> </asp:DropDownList> <P> <asp:Label id="Label1" runat="server" Text="Enter a new address for the selected user." /> <asp:TextBox id="TextBox1" runat="server" /> <asp:Button id="Submit" runat="server" Text="Submit" OnClick="On_Click" /> <P><asp:Label id="Label2" runat="server" Text="" /> </FORM> </BODY> </HTML>
<%@Page Language="VJ#" %> <%@Import Namespace="System.Data" %> <%@Import Namespace="System.Data.Common" %> <%@Import Namespace="System.Diagnostics" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <SCRIPT runat="server"> private void On_Click(Object source, System.EventArgs e) { try { SqlDataSource1.Update(); } catch (System.Exception except) { // Handle Exception } Label2.set_Text("The record was updated successfully!"); } //On_Click private void OnSqlUpdate(Object source, SqlDataSourceCommandEventArgs e) { // Log the command in the Event Log on the Web server. String logInfo = e.get_Command().get_CommandText() + " is being submitted to the database."; IEnumerator ie = e.get_Command().get_Parameters().GetEnumerator(); while (ie.MoveNext()) { DbParameter param = ((DbParameter)(ie.get_Current())); logInfo = logInfo + " " + param.get_ParameterName()+ "=" + param.get_Value(); } EventLog log = new EventLog(); log.set_Log("Application"); log.set_Source("ASP.NET Example"); log.WriteEntry(logInfo); } //OnSqlUpdate </SCRIPT> <HTML> <BODY> <FORM runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" SelectCommand="SELECT EmployeeID, LastName, Address FROM Employees" UpdateCommand="UPDATE Employees SET Address=@Address WHERE EmployeeID=@EmployeeID" OnUpdating="OnSqlUpdate"> <UpdateParameters> <asp:ControlParameter Name="Address" ControlId="TextBox1" PropertyName="Text"/> <asp:ControlParameter Name="EmployeeID" ControlId="DropDownList1" PropertyName="SelectedValue"/> </UpdateParameters> </asp:SqlDataSource> <asp:DropDownList id="DropDownList1" runat="server" DataTextField="LastName" DataValueField="EmployeeID" DataSourceID="SqlDataSource1"> </asp:DropDownList> <P> <asp:Label id="Label1" runat="server" Text="Enter a new address for the selected user." /> <asp:TextBox id="TextBox1" runat="server" /> <asp:Button id="Submit" runat="server" Text="Submit" OnClick="On_Click" /> <P><asp:Label id="Label2" runat="server" Text="" /> </FORM> </BODY> </HTML>
 .NET Framework のセキュリティ
.NET Framework のセキュリティ 継承階層
継承階層System.EventArgs
System.ComponentModel.CancelEventArgs
System.Web.UI.WebControls.SqlDataSourceCommandEventArgs
System.Web.UI.WebControls.SqlDataSourceSelectingEventArgs
 スレッド セーフ
スレッド セーフ プラットフォーム
プラットフォーム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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
 バージョン情報
バージョン情報 参照
参照- SqlDataSourceCommandEventArgs クラスのページへのリンク

 
                             
                    


