Condividi tramite


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à

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

Attributi

Esempio

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

Nell'esempio di codice seguente viene illustrato come usare un controllo con un ObjectDataSource oggetto business e un DetailsView controllo per inserire dati. Inizialmente, le DetailsView caselle di testo vengono visualizzate 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 usando il metodo specificato dalla InsertMethod proprietà e tutti i parametri specificati nella InsertParameters raccolta. In questo esempio di codice viene specificato un parametro nella InsertParameters raccolta che corrisponde all'ID del supervisore. Questo perché, anche se l'ID viene visualizzato nell'insieme Rows per il DetailsView controllo come oggetto, viene passato come BoundField stringa al ObjectDataSource controllo. Aggiungendola in modo esplicito all'insieme InsertParameters con una Type proprietà impostata sul Int32 valore, verrà passata correttamente dal ObjectDataSource metodo come Int32stringa.

Quando viene eseguita l'operazione Insert , viene chiamato il metodo identificato dalla InsertMethod proprietà . Se il metodo dell'oggetto ha una firma del metodo che include parametri, l'insieme InsertInsertParameters deve contenere parametri con nomi che corrispondono ai parametri della firma del metodo per il completamento 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 metodo usato dall'esempio Insert di codice precedente. Il InsertNewEmployeeWrapper metodo viene aggiunto all'oggetto EmployeeLogic di livello intermedio fornito nella ObjectDataSource panoramica della 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 connettersi ObjectDataSource a un metodo di oggetto business che ottiene i dati per un nuovo record di database usando parametri. L'esempio non aggiunge 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 InsertMethod firma della proprietà. I nomi dei parametri sono 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 ai dati. Questo è importante perché i controlli associati a dati forniscono sempre i 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 della raccolta. Per altre informazioni, vedere Uso di parametri con il controllo ObjectDataSource.

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

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

Si applica a

Vedi anche