ObjectDataSource.InsertParameters Propriété

Définition

Obtient la collection de paramètres qui contient les paramètres utilisés par la propriété 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

Valeur de propriété

ParameterCollection

ParameterCollection qui contient les paramètres utilisés par la méthode identifiée par la propriété InsertMethod.

Attributs

Exemples

Cette section contient deux exemples de code. Le premier exemple de code montre comment utiliser un ObjectDataSource objet avec un objet métier et un DetailsView contrôle pour insérer des données. Le deuxième exemple de code fournit un exemple d’implémentation de la Insert méthode utilisée dans le premier exemple de code.

L’exemple de code suivant montre comment utiliser un ObjectDataSource contrôle avec un objet métier et un DetailsView contrôle pour insérer des données. Initialement, les DetailsView zones de texte d’affichage dans lesquelles vous pouvez entrer des données pour un nouvel NorthwindEmployee enregistrement, ainsi qu’un bouton Insertion généré automatiquement. Après avoir entré des données dans les champs du DetailsView contrôle, cliquez sur le bouton Insérer . La InsertMethod propriété identifie la méthode qui effectue l’opération d’insertion.

Si vous cliquez sur le bouton Insérer , l’opération est effectuée à l’aide de la méthode spécifiée par la InsertMethod propriété et des paramètres spécifiés dans la InsertParameters collection. Dans cet exemple de code, un paramètre est spécifié dans la InsertParameters collection qui correspond à l’ID du superviseur. Cela est dû au fait que même si l’ID est affiché dans la Rows collection du DetailsView contrôle en tant qu’objet, il est passé en tant que BoundField chaîne au ObjectDataSource contrôle. En l’ajoutant explicitement à la InsertParameters collection avec une Type propriété définie sur la Int32 valeur, elle sera transmise correctement par la ObjectDataSource méthode en tant que Int32chaîne, et non sous forme de chaîne.

Lorsque l’opération Insert est effectuée, la méthode identifiée par la InsertMethod propriété est appelée. Si la Insert méthode de l’objet a une signature de méthode qui inclut des paramètres, la InsertParameters collection doit contenir des paramètres qui ont des noms qui correspondent aux paramètres de signature de méthode pour que la Insert méthode se termine correctement.

Important

Vous devez valider toute valeur de paramètre que vous recevez du client. Le runtime remplace simplement la valeur du paramètre dans la InsertMethod propriété.

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

L’exemple de code suivant fournit un exemple d’implémentation de la Insert méthode utilisée par l’exemple de code précédent. La InsertNewEmployeeWrapper méthode est ajoutée à l’objet de niveau intermédiaire fourni dans la EmployeeLogic vue d’ensemble de la ObjectDataSource classe pour permettre à l’objet de fonctionner plus facilement avec le ObjectDataSource contrôle dans les scénarios Web, sans réécriture substantielle dans la logique métier réelle.

Pour exécuter l’exemple, vous devez disposer de la NorthwindEmployee classe fournie dans la vue d’ensemble de la ObjectDataSource classe. Cet exemple illustre uniquement comment connecter la méthode d’objet métier qui obtient des données pour un nouvel enregistrement de base de données à l’aide ObjectDataSource de paramètres. L’exemple n’ajoute pas d’enregistrements à la base de données, car la Save méthode de la NorthwindEmployee classe n’inclut pas de code pour mettre à jour la base de données.

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

Remarques

Les noms et les types des paramètres contenus dans la InsertParameters collection doivent correspondre aux noms et types des paramètres figurant dans la InsertMethod signature de propriété. Les noms de paramètres respectent la casse. Lors de l’utilisation de contrôles liés aux données qui fournissent des paramètres, tels que les contrôles et DetailsView les GridView contrôles, le ObjectDataSource contrôle fusionne automatiquement tous les paramètres spécifiés explicitement dans la collection avec les paramètres fournis par le contrôle lié aux données. Cela est important, car les contrôles liés aux données fournissent toujours leurs paramètres en tant que String types et si la signature de méthode inclut des types numériques ou de date, vous devez inclure explicitement un paramètre dans la InsertParameters collection avec le type correct. Sinon, le ObjectDataSource contrôle tente de caster les paramètres en fonction du type défini par les paramètres de la collection. Pour plus d’informations, consultez Utilisation de paramètres avec le contrôle ObjectDataSource.

La InsertParameters propriété récupère la InsertParameters propriété contenue par celle ObjectDataSourceView associée au ObjectDataSource contrôle.

Pour plus d’informations sur la fusion de paramètres, la durée de vie des objets et la résolution de méthode, consultez InsertMethod.

S’applique à

Voir aussi