ObjectDataSource.InsertParameters Egenskap
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Hämtar den parametersamling som innehåller de parametrar som används av egenskapen 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
Egenskapsvärde
En ParameterCollection som innehåller de parametrar som används av metoden som identifieras av InsertMethod egenskapen.
- Attribut
Exempel
Det här avsnittet innehåller två kodexempel. Det första kodexemplet visar hur du använder ett ObjectDataSource objekt med ett affärsobjekt och en DetailsView kontroll för att infoga data. Det andra kodexemplet innehåller ett exempel på implementering av metoden Insert som används i det första kodexemplet.
Följande kodexempel visar hur du använder en ObjectDataSource kontroll med ett affärsobjekt och en DetailsView kontroll för att infoga data.
DetailsView Inledningsvis visas textrutor där du kan ange data för en ny NorthwindEmployee post, tillsammans med en automatiskt genererad Infoga-knapp. När du har angett data i fälten i DetailsView kontrollen klickar du på knappen Infoga . Egenskapen InsertMethod identifierar vilken metod som utför infogningsåtgärden.
Om du klickar på knappen Infoga utförs åtgärden med den metod som anges av InsertMethod egenskapen och eventuella parametrar som anges i InsertParameters samlingen. I det här kodexemplet anges en parameter i samlingen InsertParameters som motsvarar övervakarens ID. Detta beror på att även om ID:t visas i Rows samlingen för DetailsView kontrollen som ett BoundField objekt, skickas det som en sträng till ObjectDataSource kontrollen. Genom att lägga till den explicit i InsertParameters samlingen med en Type egenskap inställd på Int32 värdet skickas den korrekt av ObjectDataSource metoden till som en Int32, inte som en sträng.
När åtgärden Insert utförs anropas den metod som identifieras av InsertMethod egenskapen. Insert Om -metoden för objektet har en metodsignatur som innehåller parametrar måste InsertParameters samlingen innehålla parametrar som har namn som matchar metodens signaturparametrar för Insert att metoden ska slutföras.
Important
Du bör verifiera alla parametervärden som du får från klienten. Körningen ersätter helt enkelt parametervärdet i egenskapen InsertMethod .
<%@ 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>
Följande kodexempel innehåller ett exempel på implementering av metoden Insert som används i föregående kodexempel. Metoden InsertNewEmployeeWrapper läggs till i det EmployeeLogic mellannivåobjekt som tillhandahålls i klassöversikten ObjectDataSource så att objektet kan fungera enklare med ObjectDataSource kontrollen i webbscenarier, utan någon större omskrivning till den faktiska affärslogiken.
Om du vill köra exemplet måste du ha den NorthwindEmployee klass som anges i klassöversikten ObjectDataSource . Det här exemplet visar bara hur du ansluter ObjectDataSource till en affärsobjektmetod som hämtar data för en ny databaspost med hjälp av parametrar. Exemplet lägger inte till poster i databasen eftersom Save metoden för NorthwindEmployee klassen inte innehåller kod för att uppdatera databasen.
// 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
Kommentarer
Namnen och typerna av parametrarna som finns i InsertParameters samlingen måste matcha namnen och typerna av parametrarna som finns i egenskapssignaturen InsertMethod . Parameternamnen är skiftlägeskänsliga. När du arbetar med databundna kontroller som tillhandahåller parametrar, till exempel GridView kontrollerna och DetailsView , ObjectDataSource sammanfogar kontrollen automatiskt alla parametrar som uttryckligen anges i samlingen med de parametrar som tillhandahålls av den databundna kontrollen. Detta är viktigt eftersom databundna kontroller alltid anger sina parametrar som String typer, och om metodsignaturen innehåller numeriska eller datumtyper måste du uttryckligen inkludera en parameter i InsertParameters samlingen med rätt typ. Annars ObjectDataSource försöker kontrollen att omvandla parametrarna enligt den typ som definieras av parametrarna i samlingen. Mer information finns i Använda parametrar med ObjectDataSource-kontrollen.
Egenskapen InsertParameters hämtar egenskapen InsertParameters som finns i ObjectDataSourceView som är associerad med ObjectDataSource kontrollen.
Mer information om parametersammanslagningen, objektets livslängd och metodmatchning finns i InsertMethod.