Condividi tramite


Creazione di modelli per il controllo server Web FormView

Aggiornamento: novembre 2007

È possibile personalizzare il controllo FormView aggiungendo modelli che consentono all'utente di visualizzare o modificare i dati esposti dal controllo. In ogni modello sono contenuti tag, controlli con espressioni di associazione dati e pulsanti di comando che possono essere utilizzati per cambiare la modalità del controllo FormView.

Nota:

Per ulteriori informazioni sulle espressioni di associazione dati, vedere Cenni preliminari sulle espressioni di associazione dati.

Modelli di visualizzazione

Il modello di visualizzazione principale per il controllo FormView è ItemTemplate. Il modello ItemTemplate consente di visualizzare i dati associati in modalità di sola lettura. I controlli inclusi in un modello ItemTemplate, ad esempio un controllo Label, consentono solo di visualizzare dati. Nel modello possono essere contenuti anche pulsanti di comando che consentono di impostare il controllo FormView in modalità di inserimento o modifica oppure di eliminare il record corrente. Per associare i controlli presenti nel modello ai dati, è necessario utilizzare un'espressione di associazione dati in cui è incluso il metodo Eval per l'associazione dati unidirezionale, come indicato nell'esempio seguente.

<asp:FormView ID="FormView1"
  DataSourceID="SqlDataSource1"
  DataKeyNames="ProductID"     
  RunAt="server">

  <ItemTemplate>
    <table>
      <tr><td align="right"><b>Product ID:</b></td>       <td><%# Eval("ProductID") %></td></tr>
      <tr><td align="right"><b>Product Name:</b></td>     <td><%# Eval("ProductName") %></td></tr>
      <tr><td align="right"><b>Category ID:</b></td>      <td><%# Eval("CategoryID") %></td></tr>
      <tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
      <tr><td align="right"><b>Unit Price:</b></td>       <td><%# Eval("UnitPrice") %></td></tr>
    </table>                 
  </ItemTemplate>                   
</asp:FormView>
<asp:FormView ID="FormView1"
  DataSourceID="SqlDataSource1"
  DataKeyNames="ProductID"     
  RunAt="server">

  <ItemTemplate>
    <table>
      <tr><td align="right"><b>Product ID:</b></td>       <td><%# Eval("ProductID") %></td></tr>
      <tr><td align="right"><b>Product Name:</b></td>     <td><%# Eval("ProductName") %></td></tr>
      <tr><td align="right"><b>Category ID:</b></td>      <td><%# Eval("CategoryID") %></td></tr>
      <tr><td align="right"><b>Quantity Per Unit:</b></td><td><%# Eval("QuantityPerUnit") %></td></tr>
      <tr><td align="right"><b>Unit Price:</b></td>       <td><%# Eval("UnitPrice") %></td></tr>
    </table>                 
  </ItemTemplate>                 
</asp:FormView>

Nel modello ItemTemplate possono essere inclusi controlli LinkButton che cambiano la modalità del controllo FormView basata sul valore CommandName Un valore CommandName di New immette il record in modalità di inserimento e carica il modello InsertItemTemplate, che consente all'utente di inserire valori per un nuovo record. È possibile aggiungere un pulsante con un valore CommandName di Edit al modello ItemTemplate per immettere il controllo FormView in modalità di modifica. Un pulsante con un valore CommandName di Delete può essere aggiunto al modello ItemTemplate per consentire agli utenti di eliminare il record corrente dall'origine dati.

Gli altri modelli di visualizzazione che possono essere utilizzati con il controllo FormView sono EmptyDataTemplate, che viene visualizzato quando non è disponibile alcun record per l'associazione, e i modelli HeaderTemplate e FooterTemplate, che consentono di definire il contenuto rispettivamente dell'intestazione e del piè di pagina.

Modelli di modifica e inserimento

È possibile utilizzare il modello EditItemTemplate per consentire all'utente di modificare un record esistente e il modello InsertItemTemplate per raccogliere i valori relativi a un nuovo record da inserire nell'origine dati. Nei modelli EditItemTemplate e InsertItemTemplate vengono in genere inclusi controlli che accettano gli input dell'utente, ad esempio TextBox, CheckBox o DropDownList. È inoltre possibile aggiungere controlli per la visualizzazione dei dati di sola lettura, nonché pulsanti di comando che consentono agli utenti di modificare il record corrente, inserirne uno nuovo oppure annullare l'azione effettuata. Per associare i controlli presenti nei modelli EditItemTemplate e InsertItemTemplate ai dati, è necessario utilizzare un'espressione di associazione dati in cui è incluso il metodo Bind per l'associazione dati bidirezionale, come indicato nell'esempio seguente.

<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>
Nota:

Quando si utilizza un controllo ListControl, ad esempio il controlloDropDownList, è possibile associare il valore del controllo DropDownList a un campo nel record associato corrente e i valori di elenco per il controllo DropDownList a un elenco dei valori possibili separato. A questo scopo, utilizzare l'espressione Bind per associare la proprietà SelectedValue del controllo DropDownList al record associato corrente e specificare l'origine dati, la proprietà DataTextField e la proprietà DataValueField del controllo DropDownList nell'elenco dei valori possibili.

Il modello EditItemTemplate viene caricato quando l'utente sceglie un pulsante di comando con un valore CommandName di Edit. È possibile aggiungere un pulsante di comando LinkButton con una proprietà CommandName di Update per accettare i valori associati correnti e inviarli al controllo origine dati per l'aggiornamento. È inoltre possibile aggiungere un pulsante di comando LinkButton con una proprietà CommandName di Cancel per rifiutare i valori associati correnti, ripristinare la modalità di sola lettura del controllo FormView e caricare il modello ItemTemplate.

Il modello InsertItemTemplate viene caricato quando l'utente sceglie un pulsante di comando con una proprietà CommandName di New. È possibile aggiungere un pulsante di comando LinkButton con una proprietà CommandName di Insert per inviare i dati relativi al nuovo record al controllo origine dati oppure un pulsante di comando LinkButton con una proprietà CommandName di Cancel per rifiutare i nuovi valori, ripristinare la modalità di sola lettura del controllo FormView e caricare il modello ItemTemplate.

Per un esempio su come utilizzare il controllo FormView per la modifica dei dati, vedere Modifica dei dati mediante un controllo server Web FormView.

Modello per lo spostamento tra i dati

Nel controllo FormView una pagina di dati corrisponde a un singolo record associato. Se si imposta la proprietà AllowPaging del controllo FormView su true, al controllo FormView verranno aggiunti automaticamente i controlli dell'interfaccia utente per lo spostamento. È possibile personalizzare l'interfaccia aggiungendo un modello PagerTemplate. Per informazioni dettagliate, vedere Spostamento tra le pagine in un controllo server Web FormView.

Per un modello PagerTemplate relativo a un controllo FormView di esempio, vedere Spostamento tra le pagine in un controllo server Web FormView.

Vedere anche

Concetti

Cenni preliminari sul controllo server Web FormView