SqlDataSourceCommandEventHandler Delegate
Represents the method that will handle the Updating, Inserting, and Deleting events of the SqlDataSource control.
Namespace: System.Web.UI.WebControls
Assembly: System.Web (in System.Web.dll)
'Declaration Public Delegate Sub SqlDataSourceCommandEventHandler ( _ sender As Object, _ e As SqlDataSourceCommandEventArgs _ )
Parameters
- sender
- Type: System.Object
The source of the event, the SqlDataSource control.
- e
- Type: System.Web.UI.WebControls.SqlDataSourceCommandEventArgs
A SqlDataSourceCommandEventArgs that contains the event data.
When you create a SqlDataSourceCommandEventHandler delegate, you identify the method that will handle the event. To associate the event with your event handler, add an instance of the delegate to the event. The event handler is called whenever the event occurs, unless you remove the delegate. For more information about event handler delegates, see Consuming Events.
The following code example demonstrates how to handle the Inserting event to perform any preprocessing steps, such as adding a parameter to the DbCommand object contained by the SqlDataSourceCommandEventArgs to capture the value of an output parameter, before a database action is performed. In this example an insert is performed by a DetailsView control in a classic master-detail scenario, using a stored procedure. The value of the output parameter, which represents the primary key of the newly inserted row, is examined when the Inserted event is raised after the operation completes.
<%@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 xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ASP.NET Example</title> </head> <body> <form id="form1" 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="True">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>
The following code example demonstrates how to handle the RowUpdating event raised by the GridView control, to possibly cancel a database action performed by a SqlDataSource control associated with the GridView control.
<%@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"> ' Set helper text and cancel the update if the values submitted to update the row ' do not meet requirements. Sub OnRowUpdatingHandler(ByVal source As Object, ByVal e As GridViewUpdateEventArgs) If e.OldValues(0).Equals("Nancy") Then e.Cancel = "True" Label1.Text="This Row is Not Updatable!" End If End Sub 'OnRowUpdatingHandler ' Ensure any helper text is cleared. Sub OnRowCancellingHandler(ByVal source As Object, ByVal e As GridViewCancelEditEventArgs) Label1.Text="" End Sub 'OnRowCancellingHandler </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>ASP.NET Example</title> </head> <body> <form id="form1" runat="server"> <asp:SqlDataSource id="SqlDataSource1" runat="server" DataSourceMode="DataSet" ConnectionString="<%$ ConnectionStrings:MyNorthwind%>" SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees" UpdateCommand="Update Employees SET FirstName=@FirstName,LastName=@LastName,Title=@Title WHERE EmployeeID=@EmployeeID"> </asp:SqlDataSource> <asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" AutoGenerateEditButton="True" DataSourceID="SqlDataSource1" OnRowUpdating="OnRowUpdatingHandler" OnRowCancelingEdit="OnRowCancellingHandler"> <columns> <asp:BoundField HeaderText="First Name" DataField="FirstName" /> <asp:BoundField HeaderText="Last Name" DataField="LastName" /> <asp:BoundField HeaderText="Title" DataField="Title" /> </columns> </asp:GridView> <asp:Label id="Label1" runat="server"> </asp:Label> </form> </body> </html>
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.