Questa documentazione è stata archiviata e non viene gestita.

Metodo SqlDataSourceView.OnInserted

Genera l'evento Inserted dopo che il controllo SqlDataSource ha completato un'operazione di inserimento.

Spazio dei nomi: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)

protected virtual void OnInserted (
	SqlDataSourceStatusEventArgs e
)
protected void OnInserted (
	SqlDataSourceStatusEventArgs e
)
protected function OnInserted (
	e : SqlDataSourceStatusEventArgs
)
Non applicabile.

Parametri

e

Oggetto SqlDataSourceStatusEventArgs che contiene i dati dell'evento.

La generazione di un evento richiama il gestore eventi tramite un delegato. Per ulteriori informazioni, vedere Utilizzo degli eventi.

Inoltre, il metodo OnInserted consente alle classi derivate di gestire l'evento senza associare un delegato. Si tratta della tecnica maggiormente utilizzata per la gestione dell'evento in una classe derivata.

Note per gli eredi: Quando si esegue l'override del metodo OnInserted in una classe derivata, accertarsi di chiamare il metodo OnInserted per la classe base in modo che i delegati registrati ricevano l'evento.

Nell'esempio di codice riportato di seguito viene illustrato come recuperare i dati da Microsoft SQL Server e visualizzarli in un controllo GridView e come utilizzare un controllo DetailsView per visualizzare i dettagli di una riga selezionata nell'oggetto GridView e come form per inserire nuovi record.

Inizialmente, i dati sono visualizzati nel controllo GridView e la riga selezionata del controllo GridView viene visualizzata anche nel controllo DetailsView. I controlli GridView e DetailsView utilizzano controlli origine dati diversi; quello associato a DetailsView contiene le proprietà FilterExpression e FilterParameters che assicurano che venga visualizzata la riga selezionata dell'oggetto GridView.

Se si fa clic sul pulsante Inserisci generato automaticamente del controllo DetailsView, l'oggetto DetailsView visualizza un'interfaccia utente differente, utilizzata per inserire un nuovo record. Nell'esempio viene utilizzata una stored procedure per inserire record e viene restituita la chiave primaria della riga inserita. Se si inserisce un record, l'oggetto DetailsView compila automaticamente l'insieme InsertParameters con valori dalle colonne associate e chiama il metodo Insert. L'oggetto DetailsView è in grado di dedurre i parametri corretti da qualsiasi oggetto BoundField e un parametro per l'oggetto TemplateField quando si utilizza la sintassi di associazione dati bidirezionale di ASP.NET. In questo esempio, viene aggiunto un ulteriore parametro nel gestore eventi OnInserting per gestire la chiave primaria restituita dalla stored procedure.

Infine, una volta che i dati sono stati inseriti nel database dal controllo DetailsView, viene chiamato il gestore eventi OnInserted per gestire l'evento Inserted, viene visualizzato il valore della chiave primaria della riga inserita e viene chiamato in modo esplicito il metodo DataBind del controllo GridView per aggiornare i dati.

<%@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 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>

<%@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 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"
        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="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="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 Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

Microsoft .NET Framework 3.0 è supportato in Windows Vista, Microsoft Windows XP SP2 e Windows Server 2003 SP1.

.NET Framework

Supportato in:
Mostra: