ObjectDataSource.InsertParameters Proprietà
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Ottiene l'insieme di parametri che contiene i parametri utilizzati dalla InsertMethod proprietà .
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 InsertMethod proprietà .
- Attributi
Esempio
Questa sezione contiene due esempi di codice. Il primo esempio di codice illustra come utilizzare un ObjectDataSource oggetto con un oggetto business e un DetailsView controllo per inserire 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, vengono DetailsView visualizzate le 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 tutti 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 . Aggiungendolo in modo esplicito all'insieme InsertParameters con una Type proprietà impostata sul Int32 valore , verrà passato correttamente dal ObjectDataSource al metodo come , non come Int32stringa.
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 affinché il Insert metodo venga completato correttamente.
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 l'oggetto ObjectDataSource a un metodo oggetto business che ottiene i dati per un nuovo record di database utilizzando 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.