Condividi tramite


Procedura dettagliata: recupero, aggiornamento, inserimento ed eliminazione di dati con i controlli LinqDataSource e DetailsView

Aggiornamento: novembre 2007

In questa procedura dettagliata si creeranno una semplice tabella di database e una pagina Web che utilizza il controllo LinqDataSource. La pagina Web consente agli utenti di recuperare, aggiornare, inserire ed eliminare dati dalla tabella di database. Per visualizzare i dati, verrà utilizzato un controllo DetailsView. Il controllo LinqDataSource consente di eseguire tutte queste operazioni senza scrivere un'istruzione Select, Update, Insert o Delete.

Per creare una classe che rappresenti la tabella di database contenente i valori, verrà utilizzato Object Relational Designer. Il controllo LinqDataSource interagirà con questa classe generata per recuperare, aggiornare, inserire ed eliminare i dati.

Prerequisiti

Per implementare le procedure nell'ambiente di sviluppo in uso è necessario:

  • Visual Studio 2008 oppure Visual Web Developer Express Edition

  • SQL Server Express Edition installato nel computer. Se è stato installato SQL Server, è possibile utilizzare questo programma, ma sarà necessario apportare piccole modifiche ad alcune procedure.

  • Un sito Web ASP.NET.

Creazione di una tabella di database

Per eseguire i passaggi di questa procedura dettagliata è necessario disporre di una tabella di database. Se non si dispone già di una tabella, è possibile crearne una seguendo la procedura riportata di seguito. Se si utilizza una tabella esistente, i passaggi di alcune procedure non corrisponderanno esattamente al database, ma i concetti illustrati nella procedura dettagliata saranno gli stessi.

Per creare una tabella di database

  1. Se nel sito Web non è già presente una cartella App_Data, in Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto, scegliere Aggiungi cartella ASP.NET, quindi fare clic su App_Data.

  2. Fare clic con il pulsante destro del mouse sulla cartella App_Data, quindi scegliere Aggiungi nuovo elemento.

  3. In Modelli installati selezionare Database SQL, modificare il nome file in Reviews.mdf, quindi fare clic su Aggiungi.

    Aggiungere un elemento di database SQL denominato Reviews.mdf

  4. In Esplora server aprire il nodo Reviews.mdf, quindi fare clic con il pulsante destro del mouse sulla cartella Tabelle.

  5. Scegliere Aggiungi nuova tabella.

  6. Creare le seguenti colonne nella tabella:

    Nome colonna

    Tipo di dati

    Proprietà

    MovieID

    int

    IsIdentity = Yes

    Not null

    Chiave primaria

    Title

    nvarchar(50)

    Theater

    nvarchar(50)

    Review

    nvarchar(1000)

    Score

    int

    Not null

    Creare la tabella di database

  7. Salvare la tabella e denominarla MovieReviews.

  8. Aggiungere alcuni record alla tabella MovieReviews con dati di esempio.

    In Esplora server fare clic con il pulsante destro del mouse sulla tabella MovieReviews e scegliere Mostra dati tabella. Non è necessario specificare un valore per MovieID perché tale valore viene generato dal database.

Creazione di classi per rappresentare le entità di database

Per utilizzare il controllo LinqDataSource, è necessario disporre delle classi che rappresentano le entità di database. Per creare queste classi, è possibile utilizzare uno strumento disponibile in Visual Studio 2008 o Visual Web Developer Express Edition.

Per creare una classe per la tabella MovieReviews

  1. Se nel sito Web non è già presente una cartella App_Code, in Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto, scegliere Aggiungi cartella ASP.NET, quindi fare clic su App_Code.

  2. Fare clic con il pulsante destro del mouse sulla cartella App_Code, quindi scegliere Aggiungi nuovo elemento.

  3. In Modelli installati selezionare il modello Classi LINQ to SQL, rinominare il file Reviews.dbml, quindi fare clic su Aggiungi.

    Aggiungere un elemento LINQ to SQL denominato Reviews.dbml

    Verrà visualizzata la finestra Progettazione relazionale oggetti.

  4. In Esplora server trascinare la tabella MovieReviews nella finestra Progettazione relazionale oggetti.

    La tabella MovieReviews e le relative colonne sono rappresentate come entità denominata MovieReviews nella finestra di progettazione.

    Rivedere la nuova tabella in Progettazione relazionale oggetti

  5. Salvare il file Reviews.dbml.

  6. In Esplora soluzioni aprire il file Reviews.designer.cs o Reviews.designer.vb.

    Si noterà che ora sono presenti le classi per ReviewsDataContext e MovieReview. La classe ReviewsDataContext rappresenta il database, mentre la classe MovieReview rappresenta la tabella di database. Il costruttore senza parametri per la classe ReviewsDataContext legge la stringa di connessione dal file Web.config.

  7. Aprire il file Web.config.

    Osservare come la stringa di connessione sia stata aggiunta nell'elemento connectionStrings.

  8. Chiudere il file della classe e il file Web.config.

Creazione e configurazione di un controllo LinqDataSource

Dopo avere creato una tabella di database e le classi che rappresentano le entità del database, è possibile utilizzare un controllo LinqDataSource in una pagina Web ASP.NET per gestire i dati.

Per creare e configurare un controllo LinqDataSource

  1. In Visual Studio creare una nuova pagina Web ASP.NET e passare alla visualizzazione Progettazione.

  2. Dalla scheda Dati della Casella degli strumenti trascinare un controllo LinqDataSource nell'elemento form della pagina Web.

    È possibile lasciare LinqDataSource1 come valore per la proprietà ID.

    Aggiungere il controllo LinqDataSource alla finestra di progettazione

  3. Impostare la proprietà ContextTypeName su ReviewsDataContext.

  4. Impostare la proprietà TableName su MovieReviews.

  5. Impostare AutoPage su true e passare alla visualizzazione Origine.

    Nell'esempio seguente viene illustrato il markup dichiarativo per il controllo LinqDataSource:

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      ID="LinqDataSource1" 
      >
    </asp:LinqDataSource>
    

    Per selezionare i dati non è stato necessario specificare comandi di database.

Aggiunta di un controllo per la visualizzazione dei dati

È possibile a questo punto aggiungere un controllo DetailsView e associarlo al controllo LinqDataSource. Il controllo DetailsView consente agli utenti di visualizzare dati gestiti dal controllo LinqDataSource.

Per connettere i dati da LinqDataSource a un controllo DetailsView

  1. Nella scheda Dati della Casella degli strumenti fare doppio clic sul controllo DetailsView per aggiungerlo alla pagina.

    È possibile lasciare DetailsView1 come valore per la proprietà ID.

  2. Impostare la proprietà DataSourceID su LinqDataSource1.

  3. Impostare la proprietà DataKeyNames su MovieID.

  4. Impostare la proprietà AllowPaging su true.

    Nell'esempio seguente viene illustrato il markup dichiarativo per il controllo DetailsView:

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AllowPaging="true" 
      ID="DetailsView1" 
      >
    </asp:DetailsView>
    
  5. Salvare le modifiche e premere CTRL+F5 per visualizzare la pagina in un browser.

    Nel controllo DetailsView vengono visualizzati i valori per il record corrente dalla tabella MovieReviews. Il controllo DetailsView crea automaticamente i controlli Web per visualizzare ogni colonna dalla tabella di database.

Abilitazione di utenti alle operazioni di aggiornamento, inserimento ed eliminazione di dati

Il controllo LinqDataSource è in grado di creare i comandi per l'aggiornamento, l'inserimento e l'eliminazione dei dati.

Per consentire l'esecuzione di operazioni di inserimento, aggiornamento ed eliminazione

  1. Nel controllo LinqDataSource impostare le proprietà EnableUpdate, EnableInsert e EnableDelete su true.

    Nell'esempio seguente viene illustrato il markup dichiarativo per il controllo LinqDataSource:

    <asp:LinqDataSource 
      ContextTypeName="ReviewsDataContext" 
      TableName="MovieReviews" 
      AutoPage="true" 
      EnableUpdate="true" 
      EnableInsert="true" 
      EnableDelete="true" 
      ID="LinqDataSource1" 
      >
    </asp:LinqDataSource>
    
  2. Nel controllo DetailsView impostare le proprietà AutoGenerateEditButton, AutoGenerateInsertButton e AutoGenerateDeleteButton su true.

  3. Per limitare i campi visualizzati nel controllo DetailsView e specificare l'ordine dei campi, impostare la proprietà AutoGenerateRows su false.

  4. Aggiungere i campi per le colonne Title, Theater, Rating e Review e associarli ai campi dati corrispondenti.

    Nell'esempio seguente viene illustrato il markup dichiarativo per il controllo DetailsView:

    <asp:DetailsView 
      DataSourceID="LinqDataSource1" 
      DataKeyNames="MovieID" 
      AutoGenerateRows="false" 
      AutoGenerateEditButton="true"
      AutoGenerateInsertButton="true"
      AutoGenerateDeleteButton="true"
      AllowPaging="true" 
      ID="DetailsView1" 
      >
      <Fields>
        <asp:BoundField HeaderText="Title" DataField="Title" />
        <asp:BoundField HeaderText="Theater" DataField="Theater" />
        <asp:BoundField HeaderText="Number of Stars" DataField="Score" />
        <asp:BoundField HeaderText="Review" DataField="Review" />
      </Fields>
    </asp:DetailsView>
    

    La colonna MovieID viene selezionata dall'origine dati con le altre colonne, tuttavia non viene visualizzata nel controllo DetailsView e l'utente non sarà in grado di modificarne il valore. È necessario selezionare la proprietà MovieID per consentire al controllo LinqDataSource di creare automaticamente i comandi per l'aggiornamento, l'inserimento e l'eliminazione dei dati.

    Per queste operazioni sui dati non è stato necessario specificare i comandi.

  5. Salvare le modifiche e premere CTRL+F5 per visualizzare la pagina in un browser.

    Nel controllo DetailsView vengono visualizzati i campi per il record corrente dalla tabella MovieReviews. È possibile aggiornare, inserire ed eliminare record facendo clic sui pulsanti corrispondenti nel controllo DetailsView.

Passaggi successivi

In questa procedura dettagliata è stata illustrata la funzionalità di base per l'aggiornamento, l'inserimento e l'eliminazione di record utilizzando il controllo LinqDataSource. Per ulteriori informazioni sulle funzionalità aggiuntive del controllo LinqDataSource, è possibile procedere come segue:

Vedere anche

Concetti

Cenni preliminari sul controllo server Web LinqDataSource