SqlDataSourceCommandEventArgs.Command プロパティ
アセンブリ: System.Web (system.web.dll 内)

保留中のデータベース コマンドを表す DbCommand オブジェクト。

Updating、Inserting、Deleting の各イベントを処理することにより、SqlDataSource コントロールがコマンドを実行する前に、DbCommand のプロパティをチェックし、必要に応じてプロパティを操作できます。イベント ハンドラのデリゲートが呼び出された時点では、基になるデータ ソースへの接続は開いていません。したがって、DbCommand オブジェクトの Cancel メソッドを呼び出して直接データベース操作をキャンセルすることはできません。ただし、SqlDataSourceCommandEventArgs の Cancel プロパティを true に設定することにより、データベース操作をキャンセルできます。

Microsoft SQL Server からデータを取得して GridView コントロールに表示する方法と、GridView で選択した行の詳細情報を表示したり、新しいレコードを挿入するためのフォームとして DetailsView コントロールを使用する方法を次のコード例に示します。
データは最初に GridView コントロールに表示され、さらに、GridView の選択行が DetailsView に表示されます。GridView コントロールおよび DetailsView コントロールは、異なるデータ ソース コントロールを使用します。DetailsView に関連付けられたコントロールは、GridView の選択行が確実に表示されるようにする FilterExpression および FilterParameters を持ちます。
DetailsView コントロールの自動的に生成された挿入ボタンをクリックすると、DetailsView は、新しいレコードの挿入に使用する別のユーザー インターフェイスを表示します。この例では、ストアド プロシージャを使用してレコードを挿入し、挿入された行の主キーを返します。レコードを挿入すると、DetailsView は、バインドされた列の値を自動的に InsertParameters コレクションに入力し、Insert メソッドを呼び出します。DetailsView では、BoundField から正しいパラメータが推測されます。また、ASP.NET の双方向データ バインディング構文が使用されている場合は、TemplateField のパラメータが推測されます。この例では、ストアド プロシージャで返される主キーを処理するために OnInserting イベント ハンドラにパラメータが追加されます。
最後に、DetailsView によってデータベースにデータが挿入された後で、Inserted イベントを処理する OnInserted イベント ハンドラが呼び出され、挿入された行の主キーの値が表示され、データを更新する GridView コントロールの DataBind メソッドが明示的に呼び出されます。
<%@Page Language="VB" %> <%@Import Namespace="System.Data" %> <%@Import Namespace="System.Data.Common" %> <%@Import Namespace="System.Data.SqlClient" %> <!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_Inserting(ByVal sender As Object, ByVal e As SqlDataSourceCommandEventArgs) Dim insertedKey As SqlParameter insertedKey = New SqlParameter("@PK_New", SqlDbType.Int) insertedKey.Direction = ParameterDirection.Output e.Command.Parameters.Add(insertedKey) End Sub 'On_Inserting Sub On_Inserted(ByVal sender As Object, ByVal e As SqlDataSourceStatusEventArgs) Dim command As DbCommand command = e.Command ' The label displays the primary key of the recently inserted row. Label1.Text = command.Parameters("@PK_New").Value.ToString() ' Explicitly call DataBind to refresh the data ' and show the newly inserted row. GridView1.DataBind() End Sub 'On_Inserted </SCRIPT> <HTML> <BODY> <FORM runat="server"> <asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1"> <columns> <asp:BoundField HeaderText="First Name" DataField="FirstName" /> <asp:BoundField HeaderText="Last Name" DataField="LastName" /> <asp:BoundField HeaderText="Title" DataField="Title" /> <asp:ButtonField ButtonType="Link" CommandName="Select" Text="Details..." /> </columns> </asp:GridView> <asp:SqlDataSource id="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyNorthwind %>" SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"> </asp:SqlDataSource> <HR> <asp:DetailsView id="DetailsView1" runat="server" DataSourceID="SqlDataSource2" AutoGenerateRows="False" AutoGenerateInsertButton="True"> <fields> <asp:BoundField HeaderText="First Name" DataField="FirstName" ReadOnly="False"/> <asp:BoundField HeaderText="Last Name" DataField="LastName" ReadOnly="False"/> <asp:TemplateField HeaderText="Title"> <ItemTemplate> <asp:DropDownList id="TitleDropDownList" runat="server" selectedvalue="<%# Bind('Title') %>" > <asp:ListItem Selected>Sales Representative</asp:ListItem> <asp:ListItem>Sales Manager</asp:ListItem> <asp:ListItem>Vice President, Sales</asp:ListItem> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:BoundField HeaderText="Notes" DataField="Notes" ReadOnly="False"/> </fields> </asp:DetailsView> <asp:SqlDataSource id="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" SelectCommand="SELECT * FROM Employees" InsertCommandType = "StoredProcedure" InsertCommand="sp_insertemployee" OnInserting="On_Inserting" OnInserted ="On_Inserted" FilterExpression="EmployeeID={0}"> <FilterParameters> <asp:ControlParameter Name="EmployeeID" ControlId="GridView1" PropertyName="SelectedValue" /> </FilterParameters> </asp:SqlDataSource> <!-- -- An example sp_insertemployee stored procedure that returns -- the primary key of the row that was inserted in an OUT parameter. CREATE PROCEDURE sp_insertemployee @FirstName nvarchar(10), @LastName nvarchar(20) , @Title nvarchar(30), @Notes nvarchar(200), @PK_New int OUTPUT AS INSERT INTO Employees(FirstName,LastName,Title,Notes)VALUES (@FirstName,@LastName ,@Title,@Notes) SELECT @PK_New = @@IDENTITY RETURN (1) GO --> <asp:Label id="Label1" runat="server" /> </FORM> </BODY> </HTML>
<%@Page Language="C#" %> <%@Import Namespace="System.Data" %> <%@Import Namespace="System.Data.Common" %> <%@Import Namespace="System.Data.SqlClient" %> <!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_Inserting(Object sender, SqlDataSourceCommandEventArgs e) { SqlParameter insertedKey = new SqlParameter("@PK_New", SqlDbType.Int); insertedKey.Direction = ParameterDirection.Output; e.Command.Parameters.Add(insertedKey); } private void On_Inserted(Object sender, SqlDataSourceStatusEventArgs e) { DbCommand command = e.Command; // The label displays the primary key of the recently inserted row. Label1.Text = command.Parameters["@PK_New"].Value.ToString(); // Force a refresh after the data is inserted. GridView1.DataBind(); } </SCRIPT> <HTML> <BODY> <FORM runat="server"> <asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1"> <columns> <asp:BoundField HeaderText="First Name" DataField="FirstName" /> <asp:BoundField HeaderText="Last Name" DataField="LastName" /> <asp:BoundField HeaderText="Title" DataField="Title" /> <asp:ButtonField ButtonType="Link" CommandName="Select" Text="Details..." /> </columns> </asp:GridView> <asp:SqlDataSource id="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:MyNorthwind %>" SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"> </asp:SqlDataSource> <HR> <asp:DetailsView id="DetailsView1" runat="server" DataSourceID="SqlDataSource2" AutoGenerateRows="False" AutoGenerateInsertButton="True"> <fields> <asp:BoundField HeaderText="First Name" DataField="FirstName" ReadOnly="False"/> <asp:BoundField HeaderText="Last Name" DataField="LastName" ReadOnly="False"/> <asp:TemplateField HeaderText="Title"> <ItemTemplate> <asp:DropDownList id="TitleDropDownList" runat="server" selectedvalue="<%# Bind('Title') %>" > <asp:ListItem Selected>Sales Representative</asp:ListItem> <asp:ListItem>Sales Manager</asp:ListItem> <asp:ListItem>Vice President, Sales</asp:ListItem> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:BoundField HeaderText="Notes" DataField="Notes" ReadOnly="False"/> </fields> </asp:DetailsView> <asp:SqlDataSource id="SqlDataSource2" runat="server" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" SelectCommand="SELECT * FROM Employees" InsertCommandType = "StoredProcedure" InsertCommand="sp_insertemployee" OnInserting="On_Inserting" OnInserted ="On_Inserted" FilterExpression="EmployeeID={0}"> <FilterParameters> <asp:ControlParameter Name="EmployeeID" ControlId="GridView1" PropertyName="SelectedValue" /> </FilterParameters> </asp:SqlDataSource> <!-- -- An example sp_insertemployee stored procedure that returns -- the primary key of the row that was inserted in an OUT parameter. CREATE PROCEDURE sp_insertemployee @FirstName nvarchar(10), @LastName nvarchar(20) , @Title nvarchar(30), @Notes nvarchar(200), @PK_New int OUTPUT AS INSERT INTO Employees(FirstName,LastName,Title,Notes)VALUES (@FirstName,@LastName ,@Title,@Notes) SELECT @PK_New = @@IDENTITY RETURN (1) GO --> <asp:Label id="Label1" runat="server" /> </FORM> </BODY> </HTML>
<%@Page Language="VJ#" %> <%@Import Namespace="System.Data" %> <%@Import Namespace="System.Data.Common" %> <%@Import Namespace="System.Data.SqlClient" %> <!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_Inserting(Object sender, SqlDataSourceCommandEventArgs e) { // Add the Title parameter from the TemplatedField. // Cast the first Item of the DetailsView to a Table. Table tbl = (Table)DetailsView1.get_Controls().get_Item(0); // Get row two (the third row) from the rows collection. // This is the row that the DropDownList is in. TableRowCollection rows = tbl.get_Rows(); TableRow titleRow = rows.get_Item(2); // Cast the second item in the controls collection of cell one as a // DropDownList. DropDownList title = (DropDownList)titleRow.get_Cells().get_Item(1). get_Controls().get_Item(1); SqlParameter titleParam = new SqlParameter( "@Title", title.get_SelectedValue()); e.get_Command().get_Parameters().Add(titleParam); } //On_Inserting private void On_Inserted(Object sender, SqlDataSourceStatusEventArgs e) { // Explicitly call DataBind to refresh the data // and show the newly inserted row. GridView1.DataBind(); } //On_Inserted </SCRIPT> <HTML> <BODY> <FORM runat="server"> <asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" SelectedIndex="0" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField HeaderText="First Name" DataField="FirstName" /> <asp:BoundField HeaderText="Last Name" DataField="LastName" /> <asp:BoundField HeaderText="Title" DataField="Title" /> <asp:ButtonField ButtonType="Link" CommandName="Select" Text="Details..." /> </Columns> </asp:GridView> <asp:SqlDataSource id="SqlDataSource1" runat="server" ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees"> </asp:SqlDataSource> <HR> <asp:DetailsView id="DetailsView1" runat="server" DataSourceID="SqlDataSource2" AutoGenerateRows="False" AutoGenerateInsertButton="True"> <Fields> <asp:BoundField HeaderText="First Name" DataField="FirstName" ReadOnly="False"/> <asp:BoundField HeaderText="Last Name" DataField="LastName" ReadOnly="False"/> <asp:TemplateField HeaderText="Title"> <ItemTemplate> <asp:DropDownList runat="server"> <asp:ListItem Selected>Sales Representative</asp:ListItem> <asp:ListItem>Sales Manager</asp:ListItem> <asp:ListItem>Vice President, Sales</asp:ListItem> </asp:DropDownList> </ItemTemplate> </asp:TemplateField> <asp:BoundField HeaderText="Notes" DataField="Notes" ReadOnly="False"/> </Fields> </asp:DetailsView> <asp:SqlDataSource id="SqlDataSource2" runat="server" ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;" SelectCommand="SELECT * FROM Employees" InsertCommand="INSERT INTO Employees(FirstName,LastName,Title,Notes)VALUES (@FirstName,@LastName,@Title,@Notes)" OnInserting="On_Inserting" OnInserted="On_Inserted" FilterExpression="EmployeeID=@EmployeeID"> <FilterParameters> <asp:ControlParameter Name="EmployeeID" ControlId="GridView1" PropertyName="SelectedDataKey.Value"/> </FilterParameters> </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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からSqlDataSourceCommandEventArgs.Command プロパティを検索する場合は、下記のリンクをクリックしてください。

- SqlDataSourceCommandEventArgs.Command プロパティのページへのリンク