Condividi tramite


Modifica dei dati mediante i controlli origine dati

Aggiornamento: novembre 2007

I controlli origine dati arricchiscono notevolmente le funzionalità dei controlli con associazione a dati, ad esempio i controlli ListView, GridView, FormView e DetailsView, consentendo di modificare i dati nell'origine dati senza che sia necessario scrivere codice aggiuntivo. Il controllo origine dati esegue la modifica dei dati per far sì che i controlli con associazione a dati supportino gli aggiornamenti senza richiedere informazioni specifiche sul database o su altre origini dati. È possibile utilizzare controlli origine dati diversi con qualsiasi combinazione di controlli sulla pagina. È inoltre possibile modificare il database o l'origine dati utilizzata da un controllo con associazione a dati modificandone il relativo DataSourceID in modo che punti a un controllo origine dati diverso.

Comandi di modifica dei dati

È possibile configurare i controlli ObjectDataSource, SqlDataSource e AccessDataSource con i comandi dati per inserire, aggiornare ed eliminare dati negli archivi dati associati.

Quando si utilizza il controllo LinqDataSource per la modifica dei dati, non è necessario fornire comandi per inserire, aggiornare ed eliminare i dati. Tali comandi vengono generati automaticamente.

Modifica dei dati con il controllo LinqDataSource

Per attivare le operazioni di aggiornamento, inserimento ed eliminazione con il controllo LinqDataSource, impostare le proprietà EnableInsert, EnableUpdate e EnableDelete su true. Quando tali proprietà sono impostate su true, il controllo LinqDataSource utilizza LINQ to SQL per creare automaticamente i comandi per la modifica dei dati.

Nell'esempio riportato di seguito viene illustrato un controllo LinqDataSource con le proprietà EnableInsert, EnableUpdate e EnableDelete impostate su true. Un controllo DetailsView visualizza i dati e crea un pulsante per ciascun comando che consente agli utenti di modificare i dati.

<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    >
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    >
</asp:DetailsView>
<asp:LinqDataSource 
    ContextTypeName="ExampleDataContext" 
    TableName="Products" 
    EnableUpdate="true"
    EnableInsert="true"
    EnableDelete="true"
    ID="LinqDataSource1" 
    >
</asp:LinqDataSource>
<asp:DetailsView 
    DataKeyNames="ProductID"
    AutoGenerateEditButton="true"
    AutoGenerateDeleteButton="true"
    AutoGenerateInsertButton="true"
    AllowPaging="true"
    DataSourceID="LinqDataSource1"
    ID="GridView1" 
    >
</asp:DetailsView>

Modifica dei dati con il controllo ObjectDataSource

Il controllo ObjectDataSource consente di specificare un metodo oggetto dati per eseguire un tipo di aggiornamento specifico. La proprietà InsertMethod specifica il metodo oggetto dati che viene chiamato quando il controllo ObjectDataSource inserisce un elemento nell'origine dati. Analogamente, la proprietà UpdateMethod specifica il metodo oggetto dati utilizzato per gli aggiornamenti degli elementi e la proprietà DeleteMethod specifica il metodo utilizzato per eliminare un elemento dall'origine dati.

Nell'esempio di codice riportato di seguito viene illustrato un controllo ObjectDataSource con le relative proprietà InsertMethod, UpdateMethod e DeleteMethod configurate con i nomi dei metodi dell'oggetto dati sottostante.

<asp:ObjectDataSource 
  ID="EmployeeDetailsObjectDataSource" 
   
  TypeName="Samples.AspNet.Controls.NorthwindEmployee" 
  SelectMethod="GetEmployee" 
  UpdateMethod="UpdateEmployee"
  DeleteMethod="DeleteEmployee"
  InsertMethod="InsertEmployee" 
  OnInserted="EmployeeDetailsObjectDataSource_OnInserted" >
  <SelectParameters>
    <asp:Parameter Name="EmployeeID" />  
  </SelectParameters>
  <InsertParameters>
    <asp:Parameter Name="NewEmployeeID" Direction="Output" 
                   Type="Int32" DefaultValue="0" />
  </InsertParameters>
</asp:ObjectDataSource>
<asp:ObjectDataSource 
  ID="EmployeeDetailsObjectDataSource" 
   
  TypeName="Samples.AspNet.Controls.NorthwindEmployee" 
  SelectMethod="GetEmployee" 
  UpdateMethod="UpdateEmployee"
  DeleteMethod="DeleteEmployee"
  InsertMethod="InsertEmployee" 
  OnInserted="EmployeeDetailsObjectDataSource_OnInserted" >
  <SelectParameters>
    <asp:Parameter Name="EmployeeID" />  
  </SelectParameters>
  <InsertParameters>
    <asp:Parameter Name="NewEmployeeID" Direction="Output" 
                   Type="Int32" DefaultValue="0" />
  </InsertParameters>
</asp:ObjectDataSource>

Per ulteriori informazioni, vedere Creazione di un oggetto di origine del controllo ObjectDataSource.

Modifica dei dati con comandi SQL

I controlli SqlDataSource e AccessDataSource consentono di fornire comandi SQL per la modifica dei dati nell'origine dati. La proprietà InsertCommand specifica un comando SQL per inserire un record nell'origine dati. Analogamente, la proprietà UpdateCommand specifica un comando utilizzato per gli aggiornamenti dei record mentre la proprietà DeleteCommand specifica un comando utilizzato per eliminare un record dall'origine dati.

Nell'esempio di codice riportato di seguito viene illustrato un controllo SqlDataSource con le relative proprietà InsertCommand, UpdateCommand e DeleteCommand configurate con i comandi SQL che eseguono attività di aggiornamento.

<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>
<asp:sqlDataSource ID="EmployeeDetailsSqlDataSource" 
  SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees WHERE EmployeeID = @EmpID"

  InsertCommand="INSERT INTO Employees(LastName, FirstName) VALUES (@LastName, @FirstName); 
                 SELECT @EmpID = SCOPE_IDENTITY()"
  UpdateCommand="UPDATE Employees SET LastName=@LastName, FirstName=@FirstName 
                   WHERE EmployeeID=@EmployeeID"
  DeleteCommand="DELETE Employees WHERE EmployeeID=@EmployeeID"

  ConnectionString="<%$ ConnectionStrings:NorthwindConnection %>"
  OnInserted="EmployeeDetailsSqlDataSource_OnInserted"
  RunAt="server">

  <SelectParameters>
    <asp:Parameter Name="EmpID" Type="Int32" DefaultValue="0" />
  </SelectParameters>

  <InsertParameters>
    <asp:Parameter Name="EmpID" Direction="Output" Type="Int32" DefaultValue="0" />
  </InsertParameters>

</asp:sqlDataSource>

Per ulteriori informazioni, vedere Modifica dei dati tramite il controllo SqlDataSource.

Parametri

È possibile rendere più flessibili e protetti gli scenari di aggiornamento dati utilizzando i parametri per passare i valori da inserire, aggiornare o eliminare in un archivio dati. I valori dei parametri possono includere i valori di controlli della pagina, variabili dell'applicazione ASP.NET, valori di sessione e così via.

I valori dei parametri derivano in genere da controlli con associazione a dati quando tali controlli richiamano un'operazione di aggiornamento, inserimento o eliminazione. È inoltre possibile creare oggetti parametro espliciti per il controllo origine dati relativo a una determinata operazione, personalizzando in questo modo i parametri. È possibile, ad esempio, utilizzare un oggetto parametro esplicito per specificare il tipo o la direzione di un parametro o per definirne un valore predefinito qualora venga passato un valore null.

Per il controllo ObjectDataSource, i valori del parametro vengono passati come argomenti quando viene chiamato il metodo appropriato dell'oggetto dati sottostante. Per il controllo SqlDataSource o AccessDataSource, i parametri vengono passati al comando SQL utilizzato per l'aggiornamento. Per ulteriori informazioni ed esempi, vedere Utilizzo di parametri con controlli origine dati.

Eventi

I controlli origine dati generano eventi sia prima che dopo la modifica dei dati. È possibile utilizzare questi eventi per eseguire il codice sia prima dell'esecuzione di un'operazione sui dati, incluso l'annullamento dell'operazione stessa, sia dopo l'esecuzione dell'operazione. Ad esempio, è possibile utilizzare l'evento Deleting del controllo SqlDataSource per registrare informazioni relative a un record da eliminare. È inoltre possibile utilizzare l'evento Inserted del controllo SqlDataSource per recuperare un valore di identità generato automaticamente per il record appena inserito.

Vedere anche

Altre risorse

Controlli server Web dell'origine dati