ObjectDataSource.InsertParameters Propiedad

Definición

Obtiene la colección de parámetros que contiene los parámetros utilizados por la propiedad 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

Valor de propiedad

ParameterCollection

Objeto ParameterCollection que contiene los parámetros utilizados por el método identificado por la propiedad InsertMethod.

Atributos

Ejemplos

Esta sección contiene dos ejemplos de código. En el primer ejemplo de código se muestra cómo usar un ObjectDataSource objeto con un objeto de negocio y un DetailsView control para insertar datos. El segundo ejemplo de código proporciona una implementación de ejemplo del Insert método que se usa en el primer ejemplo de código.

En el ejemplo de código siguiente se muestra cómo usar un ObjectDataSource control con un objeto de negocio y un DetailsView control para insertar datos. Inicialmente, muestra DetailsView los cuadros de texto en los que puede escribir datos para un nuevo NorthwindEmployee registro, junto con un botón Insertar generado automáticamente. Después de escribir datos en los campos del DetailsView control, haga clic en el botón Insertar . La InsertMethod propiedad identifica qué método realiza la operación de inserción.

Si hace clic en el botón Insertar , la operación se realiza mediante el método especificado por la InsertMethod propiedad y los parámetros especificados en la InsertParameters colección. En este ejemplo de código, se especifica un parámetro en la InsertParameters colección que corresponde al identificador del supervisor. Esto se debe a que, aunque el identificador se muestra en la Rows colección para el DetailsView control como un BoundField objeto, se pasa como una cadena al ObjectDataSource control. Al agregarla explícitamente a la InsertParameters colección con una Type propiedad establecida en el Int32 valor , el método pasará correctamente ObjectDataSource como Int32, no como una cadena.

Cuando se realiza la Insert operación, se llama al método identificado por la InsertMethod propiedad . Si el Insert método del objeto tiene una firma de método que incluye parámetros, la InsertParameters colección debe contener parámetros que tengan nombres que coincidan con los parámetros de firma del método para que el Insert método se complete correctamente.

Importante

Debe validar cualquier valor de parámetro que reciba del cliente. El tiempo de ejecución simplemente sustituye el valor del parámetro a la InsertMethod propiedad .

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

En el ejemplo de código siguiente se proporciona una implementación de ejemplo del Insert método que usa el ejemplo de código anterior. El InsertNewEmployeeWrapper método se agrega al EmployeeLogic objeto de nivel intermedio que se proporciona en la información general de la ObjectDataSource clase para permitir que el objeto funcione más fácilmente con el ObjectDataSource control en escenarios web, sin una reescritura sustancial en la lógica de negocios real.

Para ejecutar el ejemplo, debe tener la NorthwindEmployee clase que se proporciona en la información general de la ObjectDataSource clase. En este ejemplo solo se muestra cómo conectarse ObjectDataSource a un método de objeto de negocio que obtiene datos para un nuevo registro de base de datos mediante parámetros. En el ejemplo no se agregan registros a la base de datos, ya que el Save método de la NorthwindEmployee clase no incluye código para actualizar la base de datos.

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

Comentarios

Los nombres y tipos de los parámetros contenidos en la InsertParameters colección deben coincidir con los nombres y tipos de los parámetros que se encuentran en la firma de propiedad InsertMethod . Los nombres de parámetro distinguen mayúsculas de minúsculas. Cuando se trabaja con controles enlazados a datos que proporcionan parámetros, como los GridView controles y DetailsView , el ObjectDataSource control combina automáticamente los parámetros que se especifican explícitamente en la colección con los parámetros proporcionados por el control enlazado a datos. Esto es importante porque los controles enlazados a datos siempre proporcionan sus parámetros como String tipos y, si la firma del método incluye tipos numéricos o de fecha, debe incluir explícitamente un parámetro en la InsertParameters colección con el tipo correcto. De lo contrario, el ObjectDataSource control intenta convertir los parámetros según el tipo definido por los parámetros de la colección. Para obtener más información, vea Usar parámetros con el control ObjectDataSource.

La InsertParameters propiedad recupera la InsertParameters propiedad contenida por el ObjectDataSourceView objeto asociado al ObjectDataSource control .

Para obtener más información sobre la combinación de parámetros, la duración del objeto y la resolución de métodos, vea InsertMethod.

Se aplica a

Consulte también