Sdílet prostřednictvím


ObjectDataSource.InsertParameters Vlastnost

Definice

Získá kolekci parametrů, která obsahuje parametry, které jsou používány InsertMethod vlastnost.

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

Hodnota vlastnosti

A ParameterCollection , který obsahuje parametry používané metodou identifikovanou InsertMethod vlastností .

Atributy

Příklady

Tato část obsahuje dva příklady kódu. První příklad kódu ukazuje, jak použít ObjectDataSource objekt s obchodním objektem a ovládacím DetailsView prvku pro vložení dat. Druhý příklad kódu poskytuje ukázkovou implementaci Insert metody, která se používá v prvním příkladu kódu.

Následující příklad kódu ukazuje, jak použít ovládací prvek ObjectDataSource s obchodním objektem a ovládací prvek DetailsView pro vložení dat. Zpočátku se DetailsView zobrazí textová pole, do kterých můžete zadat data pro nový NorthwindEmployee záznam, spolu s automaticky vygenerovaným tlačítkem Vložit . Po zadání dat do polí DetailsView ovládacího prvku klikněte na tlačítko Vložit . Vlastnost InsertMethod určuje, která metoda provádí operaci vložení.

Pokud kliknete na tlačítko Vložit , operace se provede pomocí metody určené InsertMethod vlastností a libovolných parametrů zadaných v kolekci InsertParameters . V tomto příkladu kódu je v kolekci InsertParameters zadán jeden parametr, který odpovídá ID správce. Důvodem je to, že i když se ID ovládacího prvku zobrazí v Rows kolekci DetailsView jako BoundField objekt, předá se ovládacímu ObjectDataSource prvku jako řetězec. Když ho InsertParameters přidáte explicitně do kolekce s vlastností nastavenou Type na Int32 hodnotu, předá se správně ObjectDataSource metodě jako Int32, ne jako řetězec.

Insert Při provedení operace je volána metoda, která je identifikovaná InsertMethod vlastností . Insert Pokud má metoda objektu podpis metody, který obsahuje parametry, InsertParameters musí kolekce obsahovat parametry s názvy, které odpovídají parametrům Insert podpisu metody, aby se metoda úspěšně dokončila.

Důležité

Měli byste ověřit všechny hodnoty parametrů, které obdržíte od klienta. Modul runtime jednoduše nahradí hodnotu parametru do InsertMethod vlastnosti .

<%@ 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>

Následující příklad kódu poskytuje příklad implementace Insert metody, kterou používá předchozí příklad kódu. Metoda InsertNewEmployeeWrapper je přidána do objektu EmployeeLogic střední vrstvy, který je k dispozici v ObjectDataSource přehledu třídy, aby objekt mohl snadněji pracovat s ovládacím ObjectDataSource prvku ve webových scénářích, bez podstatného přepsání skutečné obchodní logiky.

Pokud chcete spustit příklad, musíte mít NorthwindEmployee třídu, která je uvedena v přehledu ObjectDataSource třídy. Tento příklad pouze ukazuje, jak připojit k metodě obchodního objektu ObjectDataSource , která získává data pro nový záznam databáze pomocí parametrů. Příklad nepřidá záznamy do databáze, protože Save metoda NorthwindEmployee třídy neobsahuje kód pro aktualizaci databáze.

// 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

Poznámky

Názvy a typy parametrů obsažených v kolekci InsertParameters se musí shodovat s názvy a typy parametrů, které jsou v InsertMethod podpisu vlastnosti. V názvech parametrů se rozlišují malá a velká písmena. Při práci s ovládacími prvky vázanými na data, které poskytují parametry, jako GridView jsou ovládací prvky a DetailsView , ObjectDataSource ovládací prvek automaticky sloučí všechny parametry, které jsou explicitně zadány v kolekci, s parametry, které jsou poskytovány ovládacím prvku vázaného na data. To je důležité, protože ovládací prvky vázané na data vždy poskytují své parametry jako String typy, a pokud podpis metody obsahuje číselné typy nebo typy kalendářních dat, musíte do InsertParameters kolekce explicitně zahrnout parametr se správným typem. V opačném případě se ObjectDataSource ovládací prvek pokusí přetypovat parametry podle typu, který je definován parametry v kolekci. Další informace najdete v tématu Použití parametrů s ovládacím prvku ObjectDataSource.

Vlastnost InsertParameters načte InsertParameters vlastnost obsaženou v objektu ObjectDataSourceView , který je přidružen k ovládacímu prvku ObjectDataSource .

Další informace o slučování parametrů, životnosti objektu a řešení metod najdete v tématu InsertMethod.

Platí pro

Viz také