Udostępnij za pośrednictwem


ObjectDataSource.InsertParameters Właściwość

Definicja

Pobiera kolekcję parametrów zawierającą parametry używane przez InsertMethod 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

Element ParameterCollection zawierający parametry używane przez metodę zidentyfikowaną 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 kolekcji InsertParameters . 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 Rows kolekcji dla DetailsView kontrolki 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 prawidłowo przekazana przez ObjectDataSource metodę jako Int32ciąg , 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 zawierającą parametry, InsertParameters kolekcja musi zawierać parametry, które mają nazwy zgodne z parametrami Insert podpisu metody, aby metoda zakończyła się pomyślnie.

Ważne

Należy zweryfikować dowolną wartość parametru otrzymaną od klienta. Środowisko uruchomieniowe po prostu zastępuje wartość parametru InsertMethod do 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>

Poniższy przykład kodu zawiera przykładową implementację Insert metody używanej przez poprzedni przykład kodu. Metoda InsertNewEmployeeWrapper jest dodawana do EmployeeLogic obiektu warstwy środkowej, który jest udostępniany w przeglądzie ObjectDataSource klasy, aby umożliwić obiektowi łatwiejsze działanie za pomocą ObjectDataSource kontrolki w scenariuszach sieci Web bez znacznego ponownego zapisywania rzeczywistej logiki biznesowej.

Aby uruchomić przykład, musisz mieć klasę podaną NorthwindEmployee w przeglądzie ObjectDataSource klasy. W tym przykładzie pokazano, jak połączyć się 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 do zaktualizowania 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 znajdujących się w podpisie InsertMethod właściwości. Nazwy parametrów są uwzględniane w wielkości liter. Podczas pracy z kontrolkami powiązanymi z danymi, które dostarczają parametry, takie jak GridView kontrolki i DetailsView , ObjectDataSource kontrolka 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ą swoje parametry jako String typy, a jeśli podpis metody zawiera typy liczbowe lub daty, musisz jawnie dołączyć parametr w 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 rozpoznawania metod, zobacz InsertMethod.

Dotyczy

Zobacz też