ObjectDataSource.InsertParameters Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
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 agregarlo explícitamente a la InsertParameters colección con una Type propiedad establecida en el Int32 valor , el método pasará correctamente ObjectDataSource como , Int32no 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 de un nuevo registro de base de datos mediante parámetros. En el ejemplo no se agregan registros a la base de datos, porque 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.