ObjectDataSourceView.InsertParameters Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera kolekcję parametrów zawierającą parametry używane przez metodę InsertMethod .
public:
property System::Web::UI::WebControls::ParameterCollection ^ InsertParameters { System::Web::UI::WebControls::ParameterCollection ^ get(); };
public System.Web.UI.WebControls.ParameterCollection InsertParameters { get; }
member this.InsertParameters : System.Web.UI.WebControls.ParameterCollection
Public ReadOnly Property InsertParameters As ParameterCollection
Wartość właściwości
Element ParameterCollection zawierający parametry używane przez InsertMethod właściwość .
Przykłady
Ten rozdział zawiera dwa przykłady kodu. W pierwszym przykładzie kodu pokazano, jak wyświetlać przefiltrowane dane przy użyciu ObjectDataSource kontrolki z obiektem biznesowym i kontrolką DetailsView w celu wstawiania danych. Drugi przykład kodu zawiera przykładową implementację Insert
metody, która jest używana w pierwszym przykładzie kodu.
W poniższym przykładzie kodu pokazano, jak używać kontrolki ObjectDataSource z obiektem biznesowym i kontrolką DetailsView do wstawiania danych. Początkowo DetailsView zostanie wyświetlony nowy NorthwindEmployee
rekord wraz z automatycznie wygenerowanym przyciskiem Wstaw . Po wprowadzeniu danych do pól kontrolki DetailsView kliknij przycisk Wstaw . Właściwość InsertMethod określa, która metoda wykonuje operację Insert .
Po kliknięciu przycisku Insert Wstaw operacja jest wykonywana przy użyciu metody określonej przez InsertMethod właściwość i wszystkich parametrów określonych w InsertParameters kolekcji. W tym przykładzie kodu w kolekcji określono InsertParameters jeden parametr odpowiadający identyfikatorowi nadzorcy. Dzieje się tak, ponieważ mimo że identyfikator jest wyświetlany w Fields kolekcji kontrolki DetailsView jako BoundField obiekt, zostanie przekazany jako ciąg do kontrolki ObjectDataSource . Dodając ją jawnie do InsertParameters kolekcji z właściwością ustawioną Type na Int32 wartość , zostanie ona przekazana poprawnie przez ObjectDataSource metodę jako int
, a nie jako string
.
Po wykonaniu Insert operacji wywoływana jest metoda, która jest identyfikowana przez InsertMethod właściwość . Insert
Jeśli metoda obiektu ma sygnaturę metody, która zawiera parametry, InsertParameters kolekcja musi zawierać parametr z nazwami, które pasują do parametrów sygnatury metody, Insert aby pomyślnie zakończyć.
<%@ 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>
W poniższym przykładzie kodu przedstawiono przykładową implementację Insert
metody używanej w poprzednim przykładzie kodu. Metoda InsertNewEmployeeWrapper
jest dodawana do EmployeeLogic
obiektu warstwy środkowej, aby umożliwić obiektowi łatwiejszą pracę z kontrolką ObjectDataSource w scenariuszach sieci Web bez istotnego ponownego zapisywania rzeczywistej logiki biznesowej.
// 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
Uwagi
Nazwy i typy parametrów zawartych w InsertParameters kolekcji muszą być zgodne z nazwami i typami parametrów, które znajdują się w metodzie określonej przez sygnaturę InsertMethod właściwości. Podczas pracy z kontrolkami powiązanymi z danymi, które dostarczają parametry, takie jak GridView i DetailsView, kontrolka ObjectDataSource automatycznie scala wszystkie parametry, które są jawnie określone w kolekcji z tymi parametrami, które są dostarczane przez kontrolkę związaną z danymi. Aby uzyskać więcej informacji, zobacz InsertMethod.