ObjectDataSource.InsertParameters Proprietà

Definizione

Ottiene l'insieme di parametri contenente i parametri utilizzati dalla proprietà InsertMethod.

public:
 property System::Web::UI::WebControls::ParameterCollection ^ InsertParameters { System::Web::UI::WebControls::ParameterCollection ^ get(); };
[System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)]
public System.Web.UI.WebControls.ParameterCollection InsertParameters { get; }
[<System.Web.UI.PersistenceMode(System.Web.UI.PersistenceMode.InnerProperty)>]
member this.InsertParameters : System.Web.UI.WebControls.ParameterCollection
Public ReadOnly Property InsertParameters As ParameterCollection

Valore della proprietà

ParameterCollection

Oggetto ParameterCollection contenente i parametri utilizzati dal metodo identificato dalla proprietà InsertMethod.

Attributi

Esempio

In questa sezione sono riportati due esempi di codice. Nel primo esempio di codice viene illustrato come utilizzare un ObjectDataSource oggetto con un oggetto business e un DetailsView controllo per inserire i dati. Il secondo esempio di codice fornisce un'implementazione di esempio del Insert metodo usato nel primo esempio di codice.

Nell'esempio di codice seguente viene illustrato come utilizzare un ObjectDataSource controllo con un oggetto business e un DetailsView controllo per inserire dati. Inizialmente, le DetailsView caselle di testo in cui è possibile immettere i dati per un nuovo NorthwindEmployee record, insieme a un pulsante Inserisci generato automaticamente. Dopo aver immesso i dati nei campi del DetailsView controllo, fare clic sul pulsante Inserisci . La InsertMethod proprietà identifica il metodo che esegue l'operazione di inserimento.

Se si fa clic sul pulsante Inserisci , l'operazione viene eseguita utilizzando il metodo specificato dalla InsertMethod proprietà e i parametri specificati nell'insieme InsertParameters . In questo esempio di codice viene specificato un parametro nella InsertParameters raccolta che corrisponde all'ID del supervisore. Ciò è dovuto al fatto che, anche se l'ID viene visualizzato nell'insieme Rows per il DetailsView controllo come BoundField oggetto , viene passato come stringa al ObjectDataSource controllo . Aggiungendola in modo esplicito all'insieme InsertParameters con una Type proprietà impostata sul Int32 valore , verrà passata correttamente dal ObjectDataSource al metodo come Int32, non come stringa.

Quando viene eseguita l'operazione Insert , viene chiamato il metodo identificato dalla InsertMethod proprietà . Se il Insert metodo dell'oggetto ha una firma del metodo che include parametri, l'insieme InsertParameters deve contenere parametri con nomi che corrispondono ai parametri della firma del metodo per il completamento corretto del Insert metodo.

Importante

È necessario convalidare qualsiasi valore di parametro ricevuto dal client. Il runtime sostituisce semplicemente il valore del parametro nella InsertMethod proprietà .

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          autogeneraterows="false"
          datasourceid="ObjectDataSource1"
          defaultmode="Insert" >
          <fields>
            <asp:BoundField headertext="FirstName" datafield="FirstName" />
            <asp:BoundField headertext="LastName"   datafield="LastName" />
            <asp:BoundField headertext="Title"      datafield="Title" />
            <asp:BoundField headertext="Courtesy"   datafield="Courtesy" />
            <asp:BoundField headertext="Supervisor" datafield="Supervisor" />
          </fields>
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="InsertNewEmployeeWrapper"
          typename="Samples.AspNet.CS.EmployeeLogic" >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
          <insertparameters>
            <asp:parameter name="Supervisor" type="Int32" />
          </insertparameters>
        </asp:objectdatasource>

    </form>
  </body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB" Assembly="Samples.AspNet.VB" %>
<%@ Import namespace="Samples.AspNet.VB" %>
<%@ Page language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - VB Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          autogeneraterows="false"
          datasourceid="ObjectDataSource1"
          defaultmode="Insert" >
          <fields>
            <asp:BoundField headertext="FirstName" datafield="FirstName" />
            <asp:BoundField headertext="LastName"   datafield="LastName" />
            <asp:BoundField headertext="Title"      datafield="Title" />
            <asp:BoundField headertext="Courtesy"   datafield="Courtesy" />
            <asp:BoundField headertext="Supervisor" datafield="Supervisor" />
          </fields>
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="InsertNewEmployeeWrapper"
          typename="Samples.AspNet.VB.EmployeeLogic" >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
          <insertparameters>
            <asp:parameter name="Supervisor" type="Int32" />
          </insertparameters>
        </asp:objectdatasource>

    </form>
  </body>
</html>

Nell'esempio di codice seguente viene fornita un'implementazione di esempio del Insert metodo usato dall'esempio di codice precedente. Il InsertNewEmployeeWrapper metodo viene aggiunto all'oggetto EmployeeLogic di livello intermedio fornito nella panoramica della ObjectDataSource classe per consentire all'oggetto di funzionare più facilmente con il ObjectDataSource controllo negli scenari Web, senza una riscrittura sostanziale alla logica di business effettiva.

Per eseguire l'esempio, è necessario disporre della NorthwindEmployee classe fornita nella panoramica della ObjectDataSource classe. In questo esempio viene illustrato solo come connettere a ObjectDataSource un metodo oggetto business che ottiene i dati per un nuovo record di database tramite parametri. Nell'esempio non vengono aggiunti record al database, perché il Save metodo della NorthwindEmployee classe non include il codice per aggiornare il database.

// This InsertNewEmployeeWrapper method is a wrapper method that enables
// the use of ObjectDataSource and InsertParameters, without
// substantially rewriting the true implementation for the NorthwindEmployee
// or the EmployeeLogic objects.
//
// The parameters to the method must be named the same as the
// DataControlFields used by the GridView or DetailsView controls.
public static void InsertNewEmployeeWrapper (string FirstName,
                                             string LastName,
                                             string Title,
                                             string Courtesy,
                                             int    Supervisor)
{
  // Build the NorthwindEmployee object and
  // call the true  implementation.
  NorthwindEmployee tempEmployee = new NorthwindEmployee();

  tempEmployee.FirstName  = FirstName;
  tempEmployee.LastName   = LastName;
  tempEmployee.Title      = Title;
  tempEmployee.Courtesy   = Courtesy;
  tempEmployee.Supervisor = Supervisor;

  // Call the true implementation.
  InsertNewEmployee(tempEmployee);
}

public static void InsertNewEmployee(NorthwindEmployee ne) {
  bool retval = ne.Save();
  if (! retval) { throw new NorthwindDataException("InsertNewEmployee failed."); }
}
' This InsertNewEmployeeWrapper method is a wrapper method that enables
' the use of ObjectDataSource and InsertParameters, without
' substantially rewriting the true implementation for the NorthwindEmployee
' or the EmployeeLogic objects.
'
' The parameters to the method must be named the same as the
' DataControlFields used by the GridView or DetailsView controls.
Public Shared Sub InsertNewEmployeeWrapper(FirstName As String, LastName As String, Title As String, Courtesy As String, Supervisor As Integer)
   ' Build the NorthwindEmployee object and
   ' call the true  implementation.
   Dim tempEmployee As New NorthwindEmployee()

   tempEmployee.FirstName = FirstName
   tempEmployee.LastName = LastName
   tempEmployee.Title = Title
   tempEmployee.Courtesy = Courtesy
   tempEmployee.Supervisor = Supervisor

   ' Call the true implementation.
   InsertNewEmployee(tempEmployee)
End Sub


Public Shared Sub InsertNewEmployee(ne As NorthwindEmployee)
   Dim retval As Boolean = ne.Save()
   If Not retval Then
      Throw New NorthwindDataException("InsertNewEmployee failed.")
   End If
End Sub

Commenti

I nomi e i tipi dei parametri contenuti nell'insieme InsertParameters devono corrispondere ai nomi e ai tipi dei parametri presenti nella firma della InsertMethod proprietà. I nomi dei parametri fanno distinzione tra maiuscole e minuscole. Quando si utilizzano controlli associati a dati che forniscono parametri, ad esempio i GridView controlli e DetailsView , il ObjectDataSource controllo unisce automaticamente tutti i parametri specificati in modo esplicito nella raccolta con i parametri forniti dal controllo associato a dati. Ciò è importante perché i controlli associati a dati forniscono sempre i relativi parametri come String tipi e, se la firma del metodo include tipi numerici o di data, è necessario includere in modo esplicito un parametro nella InsertParameters raccolta con il tipo corretto. In caso contrario, il ObjectDataSource controllo tenta di eseguire il cast dei parametri in base al tipo definito dai parametri nella raccolta. Per altre informazioni, vedere Uso dei parametri con il controllo ObjectDataSource.

La InsertParameters proprietà recupera la InsertParameters proprietà contenuta nell'oggetto ObjectDataSourceView associato al ObjectDataSource controllo .

Per altre informazioni sull'unione dei parametri, sulla durata degli oggetti e sulla risoluzione dei metodi, vedere InsertMethod.

Si applica a

Vedi anche