ObjectDataSource.InsertParameters Właściwość

Definicja

Pobiera kolekcję parametrów zawierającą InsertMethod parametry używane przez właściwość .

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

Wartość właściwości

ParameterCollection

Element ParameterCollection zawierający parametry używane przez metodę identyfikowaną InsertMethod przez właściwość .

Atrybuty

Przykłady

Ten rozdział zawiera dwa przykłady kodu. W pierwszym przykładzie kodu pokazano, jak używać ObjectDataSource obiektu z obiektem biznesowym i kontrolką DetailsView do 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 wyświetlane DetailsView są pola tekstowe, w których można wprowadzać dane dla nowego NorthwindEmployee rekordu, 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ę wstawiania.

Po kliknięciu przycisku 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. Jest to spowodowane tym, że mimo że identyfikator jest wyświetlany w Rows kolekcji kontrolki DetailsView jako BoundField obiekt, jest przekazywany 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 Int32, a nie jako ciąg.

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ć parametry, które mają nazwy zgodne z parametrami sygnatury metody, Insert aby metoda została ukończona pomyślnie.

Ważne

Należy zweryfikować dowolną wartość parametru otrzymaną od klienta. Środowisko uruchomieniowe po prostu podstawi wartość parametru do InsertMethod właściwości .

<%@ 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, który jest udostępniany w przeglądzie ObjectDataSource klasy, aby umożliwić łatwiejsze działanie obiektu za pomocą ObjectDataSource kontrolki w scenariuszach sieci Web bez istotnego ponownego zapisywania rzeczywistej logiki biznesowej.

Aby uruchomić przykład, musisz mieć klasę podaną NorthwindEmployee w omówieniu ObjectDataSource klasy. W tym przykładzie pokazano tylko, jak nawiązać połączenie z ObjectDataSource metodą obiektu biznesowego, która pobiera dane dla nowego rekordu bazy danych przy użyciu parametrów. Przykład nie dodaje rekordów do bazy danych, ponieważ Save metoda NorthwindEmployee klasy nie zawiera kodu służącego do aktualizowania bazy danych.

// 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 podpisie InsertMethod właściwości. W nazwach parametrów jest rozróżniana wielkość liter. Podczas pracy z kontrolkami powiązanymi z danymi, które dostarczają parametry, takie jak GridView kontrolki i DetailsView , kontrolka ObjectDataSource automatycznie scala wszystkie parametry, które są jawnie określone w kolekcji z parametrami dostarczanymi przez kontrolkę związaną z danymi. Jest to ważne, ponieważ kontrolki powiązane z danymi zawsze dostarczają parametry jako String typy, a jeśli podpis metody zawiera typy liczbowe lub daty, musisz jawnie dołączyć parametr do InsertParameters kolekcji z poprawnym typem. W przeciwnym razie kontrolka ObjectDataSource próbuje rzutować parametry zgodnie z typem zdefiniowanym przez parametry w kolekcji. Aby uzyskać więcej informacji, zobacz Using Parameters with the ObjectDataSource Control (Używanie parametrów z kontrolką ObjectDataSource).

Właściwość InsertParameters pobiera InsertParameters właściwość, która jest zawarta przez ObjectDataSourceView element skojarzony z kontrolką ObjectDataSource .

Aby uzyskać więcej informacji na temat scalania parametrów, okresu istnienia obiektu i rozwiązywania metod, zobacz InsertMethod.

Dotyczy

Zobacz też