ObjectDataSource (Clase)
Representa un objeto comercial que proporciona datos a los controles enlazados a datos en las arquitecturas de aplicaciones Web multi-nivel.
System.Web.UI.Control
System.Web.UI.DataSourceControl
System.Web.UI.WebControls.ObjectDataSource
Ensamblado: System.Web (en System.Web.dll)
El tipo ObjectDataSource expone los siguientes miembros.
| Nombre | Descripción | |
|---|---|---|
|
ObjectDataSource() | Inicializa una nueva instancia de la clase ObjectDataSource. |
|
ObjectDataSource(String, String) | Inicializa una instancia nueva de la clase ObjectDataSource con el nombre del tipo y el nombre del método de recuperación de datos especificados. |
| Nombre | Descripción | |
|---|---|---|
|
Adapter | Obtiene el adaptador específico del explorador para el control. (Se hereda de Control). |
|
AppRelativeTemplateSourceDirectory | Obtiene o establece el directorio virtual relativo a la aplicación del objeto Page o el objeto UserControl que contiene este control. (Se hereda de Control). |
|
BindingContainer | Infraestructura. Obtiene el control que contiene el enlace de datos de este control. (Se hereda de Control). |
|
CacheDuration | Obtiene o establece el período de tiempo, en segundos, que el control de origen de datos almacena en memoria caché los datos recuperados por la propiedad SelectMethod. |
|
CacheExpirationPolicy | Obtiene o establece el comportamiento de expiración de la memoria caché que, combinado con la duración, describe el comportamiento de almacenamiento en caché que usa el control de origen de datos. |
|
CacheKeyDependency | Obtiene o establece una dependencia de clave definida por el usuario que está vinculada a todos los objetos de caché de datos creados por el control de origen de datos. |
|
ChildControlsCreated | Obtiene un valor que indica si se han creado controles secundarios del control de servidor. (Se hereda de Control). |
|
ClientID | Obtiene el identificador del control de servidor generado por ASP.NET. (Se hereda de DataSourceControl). |
|
ClientIDMode | Esta propiedad no se utiliza para los controles de orígenes de datos. (Se hereda de DataSourceControl). |
|
ClientIDSeparator | Obtiene un valor de carácter que representa el carácter separado utilizado en la propiedad ClientID. (Se hereda de Control). |
|
ConflictDetection | Obtiene o establece un valor que determina si se pasan o no únicamente los valores nuevos al método Update o si se pasan tanto los valores nuevos como los antiguos. |
|
Context | Obtiene el objeto HttpContext asociado al control de servidor para la solicitud Web actual. (Se hereda de Control). |
|
Controls | Obtiene un objeto ControlCollection que representa los controles secundarios para un control de servidor especificado en la jerarquía de la interfaz de usuario. (Se hereda de DataSourceControl). |
|
ConvertNullToDBNull | Obtiene o establece un valor que indica si el control ObjectDataSource convierte automáticamente los valores de Parameter que se pasan a una operación de actualización, inserción o eliminación desde null al valor Value. |
|
DataItemContainer | Obtiene una referencia al contenedor de nomenclatura si este implementa IDataItemContainer. (Se hereda de Control). |
|
DataKeysContainer | Obtiene una referencia al contenedor de nomenclatura si este implementa IDataKeysControl. (Se hereda de Control). |
|
DataObjectTypeName | Obtiene o establece el nombre de una clase que el control ObjectDataSource utiliza para un parámetro de una operación que actualiza, inserta o elimina datos, en lugar de pasar valores individuales desde el control enlazado a datos. |
|
DeleteMethod | Obtiene o establece el nombre del método o la función que invoca el control ObjectDataSource para eliminar los datos. |
|
DeleteParameters | Obtiene la colección de parámetros que contiene los parámetros utilizados por el método DeleteMethod. |
|
DesignMode | Obtiene un valor que indica si se está utilizando un control en una superficie de diseño. (Se hereda de Control). |
|
EnableCaching | Obtiene o establece un valor que indica si el control ObjectDataSource tiene habilitado el almacenamiento de datos en caché. |
|
EnablePaging | Obtiene o establece un valor que indica si el control de origen de datos admite la paginación en el conjunto de datos recuperado. |
|
EnableTheming | Obtiene un valor que indica si el control admite temas. (Se hereda de DataSourceControl). |
|
EnableViewState | Obtiene o establece un valor que indica si el control de servidor debe mantener su estado de vista y el de los controles secundarios que contiene, en el cliente que realiza la solicitud. (Se hereda de Control). |
|
Events | Obtiene una lista de delegados de controladores de eventos del control. Esta propiedad es de sólo lectura. (Se hereda de Control). |
|
FilterExpression | Obtiene o establece una expresión de filtrado que se aplica cuando se llama al método que se especifica mediante la propiedad SelectMethod. |
|
FilterParameters | Obtiene una colección de parámetros que están asociados a los marcadores de posición de parámetros de la cadena FilterExpression. |
|
HasChildViewState | Obtiene un valor que indica si los controles secundarios del control de servidor actual tienen guardada alguna configuración del estado de vista. (Se hereda de Control). |
|
ID | Obtiene o establece el identificador de programación asignado al control de servidor. (Se hereda de Control). |
|
IdSeparator | Infraestructura. Obtiene el carácter utilizado para separar los identificadores de control. (Se hereda de Control). |
|
InsertMethod | Obtiene o establece el nombre del método o la función que invoca el control ObjectDataSource para insertar los datos. |
|
InsertParameters | Obtiene la colección de parámetros que contiene los parámetros utilizados por la propiedad InsertMethod. |
|
IsChildControlStateCleared | Obtiene un valor que indica si los controles que se encuentran en este control tienen estado de control. (Se hereda de Control). |
|
IsTrackingViewState | Obtiene un valor que indica si el control de servidor está guardando los cambios realizados en su estado de vista. (Se hereda de Control). |
|
IsViewStateEnabled | Obtiene un valor que indica si el estado de vista está habilitado para este control. (Se hereda de Control). |
|
LoadViewStateByID | Obtiene un valor que indica si el control participa en la carga de su estado de vista mediante ID en lugar de índice. (Se hereda de Control). |
|
MaximumRowsParameterName | Obtiene o establece el nombre del parámetro del método de recuperación de datos del objeto comercial utilizado para indicar el número de registros que se recuperan para admitir la paginación de origen de datos. |
|
NamingContainer | Obtiene una referencia al contenedor de nomenclatura del control de servidor, que crea un espacio de nombres único para diferenciar los distintos controles de servidor que tienen el mismo valor para la propiedad Control.ID. (Se hereda de Control). |
|
OldValuesParameterFormatString | Obtiene o establece una cadena de formato para aplicarla a los nombres de los parámetros de los valores originales que se pasan a los métodos Delete o Update. |
|
Page | Obtiene una referencia a la instancia Page que contiene el control de servidor. (Se hereda de Control). |
|
Parent | Obtiene una referencia al control principal del control de servidor en la jerarquía de controles de página. (Se hereda de Control). |
|
RenderingCompatibility | Obtiene o establece un valor que especifica la versión de ASP.NET compatible con los elementos HTML representados. (Se hereda de Control). |
|
SelectCountMethod | Obtiene o establece el nombre del método o la función que invoca el control ObjectDataSource para recuperar un recuento de filas. |
|
SelectMethod | Obtiene o establece el nombre del método o la función que invoca el control ObjectDataSource para recuperar los datos. |
|
SelectParameters | Obtiene una colección de los parámetros que usa el método especificado por la propiedad SelectMethod. |
|
Site | Obtiene información sobre el contenedor en que se encuentra el control actual cuando se representa en una superficie de diseño. (Se hereda de Control). |
|
SkinID | Obtiene la máscara que se va a aplicar al control DataSourceControl. (Se hereda de DataSourceControl). |
|
SortParameterName | Obtiene o establece el nombre del objeto comercial que utilizó el parámetro SelectMethod para especificar una expresión de ordenación para admitir la ordenación del origen de datos. |
|
SqlCacheDependency | Obtiene o establece una cadena delimitada por puntos y comas que indica las bases de datos y las tablas que deben utilizarse para la dependencia de caché de Microsoft SQL Server. |
|
StartRowIndexParameterName | Obtiene o establece el nombre del parámetro del método de recuperación de datos utilizado para indicar el valor del identificador del primer registro que se recupera para admitir la paginación del origen de datos. |
|
TemplateControl | Obtiene o establece una referencia a la plantilla que contiene este control. (Se hereda de Control). |
|
TemplateSourceDirectory | Obtiene el directorio virtual de Page o UserControl que contiene el control de servidor actual. (Se hereda de Control). |
|
TypeName | Obtiene o establece el nombre de la clase que representa el objeto ObjectDataSource. |
|
UniqueID | Obtiene el identificador único calificado jerárquicamente para el control de servidor. (Se hereda de Control). |
|
UpdateMethod | Obtiene o establece el nombre del método o la función que invoca el control ObjectDataSource para actualizar los datos. |
|
UpdateParameters | Obtiene la colección de parámetros que contiene los parámetros utilizados por el método especificado por la propiedad UpdateMethod. |
|
ViewState | Obtiene un diccionario con información de estado que le permite guardar y restaurar el estado de vista de un control de servidor en las distintas solicitudes de la misma página. (Se hereda de Control). |
|
ViewStateIgnoresCase | Obtiene un valor que indica si el objeto StateBag no distingue mayúsculas de minúsculas. (Se hereda de Control). |
|
ViewStateMode | Obtiene o establece el modo del estado de vista de este control. (Se hereda de Control). |
|
Visible | Obtiene o establece un valor que indica si el control se muestra gráficamente. (Se hereda de DataSourceControl). |
| Nombre | Descripción | |
|---|---|---|
|
AddedControl | Se le llama una vez que se ha agregado un control secundario a la colección Controls del Control objeto. (Se hereda de Control). |
|
AddParsedSubObject | Indica al control de servidor que se ha analizado un elemento, ya sea XML o HTML, y agrega dicho elemento al objeto ControlCollection del control de servidor. (Se hereda de Control). |
|
ApplyStyleSheetSkin | Aplica al control las propiedades de estilo definidas en la hoja de estilos de página. (Se hereda de DataSourceControl). |
|
BuildProfileTree | Infraestructura. Recopila información sobre el control de servidor y la pasa a la propiedad Trace para que se muestre cuando está habilitada la traza de la página. (Se hereda de Control). |
|
ClearCachedClientID | Infraestructura. Establece en null el valor de ClientID almacenado en caché. (Se hereda de Control). |
|
ClearChildControlState | Elimina la información sobre el estado de control de los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearChildState | Elimina la información sobre el estado de vista y el estado de control de los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearChildViewState | Elimina la información sobre el estado de vista de todos los controles secundarios del control de servidor. (Se hereda de Control). |
|
ClearEffectiveClientIDMode | Infraestructura. Establece la propiedad ClientIDMode de la instancia del control actual y de cualquier control secundario en Inherit. (Se hereda de Control). |
|
CreateChildControls | Lo llama el marco de trabajo de las páginas ASP.NET para indicar a los controles de servidor que utilizan la implementación basada en la composición que creen los controles secundarios que contengan como forma de preparar la devolución o representación de los datos. (Se hereda de Control). |
|
CreateControlCollection | Crea una colección para almacenar controles secundarios. (Se hereda de DataSourceControl). |
|
DataBind() | Enlaza un origen de datos al control de servidor invocado y a todos sus controles secundarios. (Se hereda de Control). |
|
DataBind(Boolean) | Enlaza un origen de datos al control de servidor que se ha invocado y a todos sus controles secundarios con una opción para generar el evento DataBinding. (Se hereda de Control). |
|
DataBindChildren | Enlaza un origen de datos a los controles secundarios del control de servidor. (Se hereda de Control). |
|
Delete | Realiza una operación de eliminación llamando al método que se identifica mediante la propiedad DeleteMethod con cualquier parámetro que esté en la colección DeleteParameters. |
|
Dispose | Habilita un control de servidor para que realice la limpieza final antes de que se libere de la memoria. (Se hereda de Control). |
|
EnsureChildControls | Determina si el control de servidor contiene controles secundarios. Si no tiene controles secundarios, los crea. (Se hereda de Control). |
|
EnsureID | Crea un identificador para controles que no tiene un identificador asignado. (Se hereda de Control). |
|
Equals(Object) | Determina si el objeto Object especificado es igual al objeto Object actual. (Se hereda de Object). |
|
Finalize | Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object). |
|
FindControl(String) | Busca un control de servidor con el parámetro id especificado en el contenedor de nomenclatura actual. (Se hereda de DataSourceControl). |
|
FindControl(String, Int32) | Infraestructura. Busca el contenedor de nomenclatura actual para un control de servidor con el id especificado y un entero, que se especifica en el parámetro pathOffset, que ayuda a realizar la búsqueda. Esta versión del método FindControl no se debe reemplazar. (Se hereda de Control). |
|
Focus | Establece el foco de entrada en el control. (Se hereda de DataSourceControl). |
|
GetDesignModeState | Infraestructura. Obtiene datos en tiempo de diseño para un control. (Se hereda de Control). |
|
GetHashCode | Actúa como función hash para un tipo concreto. (Se hereda de Object). |
|
GetRouteUrl(Object) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta. (Se hereda de Control). |
|
GetRouteUrl(RouteValueDictionary) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta. (Se hereda de Control). |
|
GetRouteUrl(String, Object) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta y un nombre de ruta. (Se hereda de Control). |
|
GetRouteUrl(String, RouteValueDictionary) | Obtiene la dirección URL que corresponde a un conjunto de parámetros de ruta y un nombre de ruta. (Se hereda de Control). |
|
GetType | Obtiene el objeto Type de la instancia actual. (Se hereda de Object). |
|
GetUniqueIDRelativeTo | Devuelve la parte correspondiente al prefijo de la propiedad UniqueID del control especificado. (Se hereda de Control). |
|
GetView | Recupera la vista de origen de datos con nombre asociada al control de origen de datos. (Invalida a DataSourceControl.GetView(String)). |
|
GetViewNames | Recupera una colección de nombres que representa la lista de objetos de vista asociados al objeto ObjectDataSource. (Invalida a DataSourceControl.GetViewNames()). |
|
HasControls | Determina si el control de servidor contiene controles secundarios. (Se hereda de DataSourceControl). |
|
HasEvents | Devuelve un valor que indica si se registran eventos para el control o los controles secundarios. (Se hereda de Control). |
|
Insert | Realiza una operación de inserción mediante una llamada al método identificado por la propiedad InsertMethod y cualquier parámetro de la colección InsertParameters. |
|
IsLiteralContent | Infraestructura. Determina si el control de servidor alberga únicamente contenido literal. (Se hereda de Control). |
|
LoadControlState | Restaura información de estado de control de una solicitud de página anterior guardada por el método SaveControlState. (Se hereda de Control). |
|
LoadViewState | Infraestructura. Carga el estado de vista previamente guardado del control ObjectDataSource. (Invalida a Control.LoadViewState(Object)). |
|
MapPathSecure | Recupera la ruta de acceso física a la que se asigna una ruta de acceso virtual, absoluta o relativa. (Se hereda de Control). |
|
MemberwiseClone | Crea una copia superficial del objeto Object actual. (Se hereda de Object). |
|
OnBubbleEvent | Determina si el evento del control de servidor debe pasarse a la jerarquía de controles de servidor de la interfaz de usuario de la página. (Se hereda de Control). |
|
OnDataBinding | Provoca el evento DataBinding. (Se hereda de Control). |
|
OnInit | Agrega un controlador de eventos LoadComplete a la página que contiene el control ObjectDataSource. (Invalida a Control.OnInit(EventArgs)). |
|
OnLoad | Provoca el evento Load. (Se hereda de Control). |
|
OnPreRender | Provoca el evento PreRender. (Se hereda de Control). |
|
OnUnload | Provoca el evento Unload. (Se hereda de Control). |
|
OpenFile | Obtiene un objeto Stream utilizado para leer un archivo. (Se hereda de Control). |
|
RaiseBubbleEvent | Asigna los orígenes del evento y su información al control principal del control. (Se hereda de Control). |
|
RaiseDataSourceChangedEvent | Genera el evento DataSourceChanged. (Se hereda de DataSourceControl). |
|
RemovedControl | Se le llama una vez que se ha quitado un control secundario de la colección Controls del Control objeto. (Se hereda de Control). |
|
Render | Envía el contenido del control de servidor a un objeto HtmlTextWriter suministrado, que escribe el contenido que se va a representar en el cliente. (Se hereda de Control). |
|
RenderChildren | Envía el contenido del control secundario del control de servidor a un objeto HtmlTextWriter suministrado, que escribe el contenido que se va a representar en el cliente. (Se hereda de Control). |
|
RenderControl(HtmlTextWriter) | Envía el contenido del control de servidor a un objeto HtmlTextWriter que se proporciona y almacena la información de traza sobre el control si dicha traza está habilitada. (Se hereda de DataSourceControl). |
|
RenderControl(HtmlTextWriter, ControlAdapter) | Coloca el contenido de un control de servidor en un objeto HtmlTextWriter proporcionado, utilizando un objeto ControlAdapter proporcionado. (Se hereda de Control). |
|
ResolveAdapter | Obtiene el adaptador de controles que se encarga de representar el control especificado. (Se hereda de Control). |
|
ResolveClientUrl | Obtiene una dirección URL que el explorador puede utilizar. (Se hereda de Control). |
|
ResolveUrl | Convierte una dirección URL en una que el cliente solicitante pueda utilizar. (Se hereda de Control). |
|
SaveControlState | Guarda los cambios de estado de un control de servidor que se hayan producido desde el momento en que se devolvieron al servidor los datos de la página. (Se hereda de Control). |
|
SaveViewState | Infraestructura. Guarda el estado del control ObjectDataSource. (Invalida a Control.SaveViewState()). |
|
Select | Recupera los datos del almacenamiento de datos subyacente mediante una llamada al método identificado por la propiedad SelectMethod con los parámetros de la colección SelectParameters. |
|
SetDesignModeState | Establece datos en tiempo de diseño para un control. (Se hereda de Control). |
|
SetRenderMethodDelegate | Infraestructura. Asigna un delegado de controlador de eventos para representar el control de servidor y su contenido en el control principal. (Se hereda de Control). |
|
ToString | Devuelve una cadena que representa el objeto actual. (Se hereda de Object). |
|
TrackViewState | Infraestructura. Efectúa el seguimiento de los cambios en el estado de vista del control ObjectDataSource para poder almacenarlos en el objeto System.Web.UI.StateBag. (Invalida a Control.TrackViewState()). |
|
Update | Realiza una operación de actualización llamando al método que se identifica mediante la propiedad UpdateMethod y cualquier parámetro que esté en la colección UpdateParameters. |
| Nombre | Descripción | |
|---|---|---|
|
DataBinding | Se produce cuando el control de servidor se enlaza a un origen de datos. (Se hereda de Control). |
|
Deleted | Se produce cuando ha finalizado una operación Delete. |
|
Deleting | Se produce antes de una operación Delete. |
|
Disposed | Se produce cuando un control de servidor se libera de la memoria, lo que constituye la última fase del período de duración de un control de servidor cuando se solicita una página ASP.NET. (Se hereda de Control). |
|
Filtering | Se produce antes de una operación de filtrado. |
|
Init | Tiene lugar al inicializar el control de servidor, que es el primer paso en su ciclo de vida. (Se hereda de Control). |
|
Inserted | Se produce cuando finaliza una operación Insert. |
|
Inserting | Se produce antes de una operación Insert. |
|
Load | Se produce cuando el control de servidor se carga en el objeto Page. (Se hereda de Control). |
|
ObjectCreated | Aparece después de crear el objeto identificado por la propiedad TypeName. |
|
ObjectCreating | Aparece antes de crear el objeto identificado por la propiedad TypeName. |
|
ObjectDisposing | Aparece antes de descartar el objeto identificado por la propiedad TypeName. |
|
PreRender | Se produce una vez que se carga el objeto Control, pero antes de su representación. (Se hereda de Control). |
|
Selected | Se produce cuando ha finalizado una operación Select. |
|
Selecting | Se produce antes de una operación Select. |
|
Unload | Se produce cuando el control de servidor se descarga de la memoria. (Se hereda de Control). |
|
Updated | Se produce cuando finaliza una operación Update. |
|
Updating | Se produce antes de una operación Update. |
| Nombre | Descripción | |
|---|---|---|
|
FindDataSourceControl | Devuelve el origen de datos que está asociado al control de datos del control especificado. (Definido por DynamicDataExtensions). |
|
FindFieldTemplate | Devuelve la plantilla de campo para la columna especificada en el contenedor de nomenclatura del control especificado. (Definido por DynamicDataExtensions). |
|
FindMetaTable | Devuelve el objeto de metatabla para el control de datos contenedor. (Definido por DynamicDataExtensions). |
| Nombre | Descripción | |
|---|---|---|
|
IControlBuilderAccessor.ControlBuilder | Para obtener una descripción de este miembro, vea IControlBuilderAccessor.ControlBuilder. (Se hereda de Control). |
|
IControlDesignerAccessor.GetDesignModeState | Para obtener una descripción de este miembro, vea IControlDesignerAccessor.GetDesignModeState. (Se hereda de Control). |
|
IControlDesignerAccessor.SetDesignModeState | Para obtener una descripción de este miembro, vea IControlDesignerAccessor.SetDesignModeState. (Se hereda de Control). |
|
IControlDesignerAccessor.SetOwnerControl | Infraestructura. Para obtener una descripción de este miembro, vea IControlDesignerAccessor.SetOwnerControl. (Se hereda de Control). |
|
IControlDesignerAccessor.UserData | Para obtener una descripción de este miembro, vea IControlDesignerAccessor.UserData. (Se hereda de Control). |
|
IDataBindingsAccessor.DataBindings | Para obtener una descripción de este miembro, vea IDataBindingsAccessor.DataBindings. (Se hereda de Control). |
|
IDataBindingsAccessor.HasDataBindings | Para obtener una descripción de este miembro, vea IDataBindingsAccessor.HasDataBindings. (Se hereda de Control). |
|
IDataSource.DataSourceChanged | Infraestructura. Se produce cuando un control de origen de datos ha cambiado de modo que afecta a los controles enlazados a datos. (Se hereda de DataSourceControl). |
|
IDataSource.GetView | Infraestructura. Obtiene el objeto DataSourceView con nombre asociado al control DataSourceControl. Ciertos controles de origen de datos sólo admiten una vista, mientras que otros admiten más de una. (Se hereda de DataSourceControl). |
|
IDataSource.GetViewNames | Infraestructura. Obtiene una colección de nombres, que representa la lista de objetos DataSourceView asociados al control DataSourceControl. (Se hereda de DataSourceControl). |
|
IExpressionsAccessor.Expressions | Para obtener una descripción de este miembro, vea IExpressionsAccessor.Expressions. (Se hereda de Control). |
|
IExpressionsAccessor.HasExpressions | Para obtener una descripción de este miembro, vea IExpressionsAccessor.HasExpressions. (Se hereda de Control). |
|
IListSource.ContainsListCollection | Infraestructura. Indica si el control de origen de datos está asociado a una o varias listas de datos. (Se hereda de DataSourceControl). |
|
IListSource.GetList | Infraestructura. Obtiene una lista de controles de origen de datos que pueden utilizarse como orígenes de listas de datos. (Se hereda de DataSourceControl). |
|
IParserAccessor.AddParsedSubObject | Para obtener una descripción de este miembro, vea IParserAccessor.AddParsedSubObject. (Se hereda de Control). |
En este tema:
Introduction
El objeto ObjectDataSource es un control de origen de datos de ASP.NET que representa un objeto de nivel medio orientado a datos o un objeto de interfaz de datos con controles enlazados a datos. El control ObjectDataSource se puede utilizar junto con un control enlazado a datos para mostrar, editar y ordenar los datos de una página Web con muy poco o nada de código.
No hay ninguna representación visual del control ObjectDataSource. Se implementa como un control para permitir crearlo de forma declarativa y, de forma opcional, permitir que participe en la administración de estados. Como resultado, ObjectDataSource no admite características visuales como las propiedades EnableTheming o SkinID.
Finalidad
Una práctica de diseño de aplicaciones bastante habitual consiste en separar la capa de presentación de la lógica empresarial y encapsular ésta en objetos comerciales. Estos objetos comerciales forman una capa aparte entre la capa de presentación y la capa de datos, lo que produce una arquitectura de aplicación de tres niveles. El control ObjectDataSource permite a los desarrolladores utilizar un control de origen de datos de ASP.NET y a la vez retener su arquitectura de aplicación de tres niveles.
El control ObjectDataSource utiliza la reflexión para crear instancias de objetos comerciales y para llamar a los métodos que contienen para recuperar, actualizar, insertar y eliminar datos. La propiedad TypeName identifica el nombre de la clase con la que trabaja ObjectDataSource. El control ObjectDataSource crea y destruye una instancia de la clase por cada llamada a un método; no mantiene el objeto en la memoria durante el periodo de duración de la solicitud Web. Esto supone una consideración importante si el objeto comercial que se utiliza requiere muchos recursos o si resulta, por otra parte, caro de crear y destruir. Puede que el uso de un objeto caro no sea la mejor opción de diseño, pero permite controlar la duración del objeto por medio de los eventos ObjectCreating, ObjectCreated y ObjectDisposing.
Nota
|
|---|
|
Los métodos identificados por las propiedades SelectMethod, UpdateMethod, InsertMethod y DeleteMethod pueden ser métodos de instancia o métodos static (Shared en Visual Basic). Si los métodos son static (Shared en Visual Basic), no se crea una instancia del objeto comercial ni se provocan los eventos ObjectCreating, ObjectCreated y ObjectDisposing. |
Recuperar datos
Para recuperar los datos de un objeto comercial, establezca la propiedad SelectMethod con el nombre del método que recupera los datos. Si el método no devuelve un objeto IEnumerable o DataSet, el motor en tiempo de ejecución incluye el objeto en una colección IEnumerable. Si la firma del método tiene parámetros, puede agregar objetos Parameter a la colección SelectParameters y después enlazarlos a los valores que desee pasar al método que especifica la propiedad SelectMethod. Para que ObjectDataSource utilice los parámetros, éstos deben coincidir con los nombres y tipos de los parámetros de la firma del método. Para obtener más información, vea Utilizar parámetros con el control ObjectDataSource.
El control ObjectDataSource recupera los datos cada vez que se llama al método Select. Este método proporciona el acceso mediante programación al método especificado por la propiedad.SelectMethod. Los controles enlazados a ObjectDataSource llaman automáticamente al método especificado por la propiedad SelectMethod cuando se llama a su método DataBind. Si establece la propiedad DataSourceID de un control enlazado a datos, el control se enlaza automáticamente a los datos del origen de datos, según sea necesario. El método recomendado para enlazar un control ObjectDataSource a un control enlazado a datos consiste en establecer la propiedad DataSourceID. Como alternativa, puede establecer la propiedad DataSource, pero entonces debe llamar explícitamente al método DataBind del control enlazado a datos. Para recuperar los datos puede llamar al método Select mediante programación en cualquier momento.
Para obtener más información acerca de cómo enlazar controles enlazados a datos a controles de origen de datos, vea Establecer enlaces a datos utilizando un control de origen de datos.
Realizar operaciones de datos
Dependiendo de las funciones del objeto comercial con el que trabaje el control ObjectDataSource, puede realizar operaciones de datos tales como la actualización, inserción y eliminación. Para realizar estas operaciones, establezca el nombre de método adecuado y cualquier parámetro asociado para la operación que desee realizar. Por ejemplo, para una operación de actualización, establezca la propiedad UpdateMethod en el nombre del método de objeto comercial que efectué actualizaciones y agregue los parámetros necesarios a la colección UpdateParameters. Si el control ObjectDataSource se asocia a un control enlazado a datos, este control agrega los parámetros. En este caso, debe garantizar que los nombres de los parámetros del método coincidan con los nombres de los campos del control enlazado a datos. La actualización se realiza cuando se llama al método Update, ya sea de manera explícita mediante código o automática mediante un control enlazado a datos. Se sigue el mismo modelo general para las operaciones Delete y Insert. Se supone que los objetos comerciales realizan las operaciones de datos de este tipo de registro en registro, en lugar de hacerlo por lotes.
Filtrar datos
El control ObjectDataSource puede filtrar los datos recuperados por la propiedad SelectMethod, si los datos se devuelven como un objeto DataSet o DataTable. El control ObjectDataSource permite almacenar en memoria caché datos de todos los tipos, aunque no es conveniente almacenar en caché aquellos objetos que conservan recursos o estados que no pueden compartirse para atender varias solicitudes (por ejemplo, un objeto SqlDataReader abierto), puesto que esta misma instancia del objeto se utilizará para atender varias solicitudes. Puede establecer la propiedad FilterExpression en una expresión de filtrado, utilizando una sintaxis de cadena de formato y enlazando los valores de la expresión a parámetros especificados en la colección FilterParameters.
Almacenamiento en caché
Aunque ObjectDataSource no conserva la instancia del objeto comercial entre varias solicitudes, puede almacenar en memoria caché el resultado de la propiedad SelectMethod. Mientras los datos estén almacenados en caché, las llamadas posteriores al método Select devolverán los datos de la caché, en lugar de crear el objeto comercial y llamar a su propiedad SelectMethod mediante reflexión. El almacenamiento en caché permite evitar crear el objeto y llamar a su método de datos a expensas de la memoria del servidor Web. El objeto ObjectDataSource almacena automáticamente los datos en memoria caché cuando la propiedad EnableCaching está establecida en true y la propiedad CacheDuration está establecida en el número de segundos durante los cuales la memoria caché almacena datos antes de descartarse la caché. También puede especificar una propiedad CacheExpirationPolicy y una propiedad SqlCacheDependency opcional.
Características
En la tabla siguiente se describen las características del control ObjectDataSource.
|
Función |
Requisitos |
|---|---|
|
Selección |
Establezca la propiedad SelectMethod en el nombre del método de objeto comercial que selecciona los datos e incluya todos los parámetros necesarios en la colección SelectParameters, ya sea mediante programación o con un control enlazado a datos. |
|
Ordenar |
Establezca la propiedad SortParameterName en el nombre del parámetro del método SelectMethod que lleva los criterios de ordenación. |
|
Filtrar |
Establezca la propiedad FilterExpression en una expresión de filtrado y, de forma opcional, agregue los parámetros necesarios a la colección FilterParameters para filtrar los datos cuando se llame al método Select. El método especificado por la propiedad SelectMethod debe devolver DataSet o DataTable. |
|
Paginación |
Se admite la paginación del origen de datos si el método SelectMethod contiene los parámetros del número máximo de registros que se recuperan y el índice del primer registro a recuperar. Los nombres de estos parámetros deben establecerse en las propiedades MaximumRowsParameterName y StartRowIndexParameterName respectivamente. Un control enlazado a datos podría realizar la paginación por sí mismo, incluso si el control ObjectDataSource no admite la paginación directamente en el método especificado por la propiedad SelectMethod. Para que el control enlazado a datos pueda hacerlo, se requiere que el método especificado por la propiedad SelectMethod devuelva un objeto que implemente la interfaz ICollection. |
|
Actualizando |
Establezca la propiedad UpdateMethod en el nombre del método de objeto comercial que actualiza los datos e incluya todos los parámetros necesarios en la colección UpdateParameters. |
|
Eliminando |
Establezca la propiedad DeleteMethod en el nombre del método de objeto comercial o la función que elimina los datos e incluya todos los parámetros necesarios en la colección DeleteParameters. |
|
Inserción |
Establezca la propiedad InsertMethod en el nombre del método de objeto comercial o la función que inserta los datos e incluya todos los parámetros necesarios en la colección InsertParameters. |
|
Almacenamiento en caché |
Establezca la propiedad EnableCaching en true y las propiedades CacheDuration y CacheExpirationPolicy según el comportamiento del almacenamiento en caché que desee para los datos almacenados en memoria caché. |
Nota
|
|---|
|
Cuando se usa la clase ObjectDataSource para actualizar o insertar datos, las cadenas que se escriben en el cliente no se convierten automáticamente del formato de referencia cultural de cliente en el formato de referencia cultural de servidor. Por ejemplo, la referencia cultural del cliente podría especificar DD/MM/AAAA como formato de fecha y el formato de fecha en el servidor podría ser MM/DD/AAAA. En ese caso, el 5 de octubre de 2009 se escribiría en un control TextBox como 5/10/2009 pero se interpretaría como el 10 de mayo de 2009. El 15 de octubre de 2009 se escribiría como 15/10/2009 y se rechazaría como una fecha no válida. |
Vista de datos
Como todos los controles de origen de datos, el control ObjectDataSource se asocia a una clase de vista de origen de datos. Aunque el control ObjectDataSource es la interfaz que usa el desarrollador de páginas para trabajar con los datos, la clase ObjectDataSourceView es la interfaz con la que trabajan los controles enlazados a datos. Además, la clase ObjectDataSourceView describe las funciones del control de origen de datos y realiza el trabajo concreto. El control ObjectDataSource sólo tiene un objeto ObjectDataSourceView asociado y siempre se denomina DefaultView. Aunque el método GetView expone el objeto ObjectDataSourceView, muchos de sus métodos y propiedades están contenidos en el control ObjectDataSource y son expuestos directamente por él. En segundo plano, el objeto ObjectDataSourceView realiza todas las operaciones de datos, incluidas recuperar, insertar, actualizar, eliminar, filtrar y ordenar los datos. Para obtener más información, vea ObjectDataSourceView.
Usar LINQ to SQL
El control ObjectDataSource se puede utilizar con una clase LINQ to SQL. Para ello, se establece la propiedad TypeName en el nombre de la clase de contexto de datos. También se establecen los métodos SelectMethod, UpdateMethod, InsertMethod y DeleteMethod en los métodos de la clase de contexto de datos que realizan las operaciones correspondientes. Debe crear un controlador para el evento ObjectDisposing con el fin de cancelar la eliminación de la clase de contexto de datos. Este paso es necesario porque LINQ to SQL admite la ejecución diferida, mientras que el control ObjectDataSource intenta eliminar el contexto de datos después de la operación Select. Para obtener más información sobre cómo crear clases LINQ to SQL, vea Cómo: Crear clases de LINQ to SQL en un proyecto web. Para obtener un ejemplo de cómo cancelar la eliminación de una clase de contexto de datos, vea el evento ObjectDisposing.
Sintaxis de la declaración
<asp:ObjectDataSource
CacheDuration="string|Infinite"
CacheExpirationPolicy="Absolute|Sliding"
CacheKeyDependency="string"
ConflictDetection="OverwriteChanges|CompareAllValues"
ConvertNullToDBNull="True|False"
DataObjectTypeName="string"
DeleteMethod="string"
EnableCaching="True|False"
EnablePaging="True|False"
EnableTheming="True|False"
EnableViewState="True|False"
FilterExpression="string"
ID="string"
InsertMethod="string"
MaximumRowsParameterName="string"
OldValuesParameterFormatString="string"
OnDataBinding="DataBinding event handler"
OnDeleted="Deleted event handler"
OnDeleting="Deleting event handler"
OnDisposed="Disposed event handler"
OnFiltering="Filtering event handler"
OnInit="Init event handler"
OnInserted="Inserted event handler"
OnInserting="Inserting event handler"
OnLoad="Load event handler"
OnObjectCreated="ObjectCreated event handler"
OnObjectCreating="ObjectCreating event handler"
OnObjectDisposing="ObjectDisposing event handler"
OnPreRender="PreRender event handler"
OnSelected="Selected event handler"
OnSelecting="Selecting event handler"
OnUnload="Unload event handler"
OnUpdated="Updated event handler"
OnUpdating="Updating event handler"
runat="server"
SelectCountMethod="string"
SelectMethod="string"
SkinID="string"
SortParameterName="string"
SqlCacheDependency="string"
StartRowIndexParameterName="string"
TypeName="string"
UpdateMethod="string"
Visible="True|False"
>
<DeleteParameters>
<asp:ControlParameter
ControlID="string"
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:CookieParameter
ConvertEmptyStringToNull="True|False"
CookieName="string"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:FormParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
FormField="string"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:Parameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:ProfileParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:QueryStringParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
QueryStringField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:SessionParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
SessionField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
</DeleteParameters>
<FilterParameters>
<asp:ControlParameter
ControlID="string"
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:CookieParameter
ConvertEmptyStringToNull="True|False"
CookieName="string"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:FormParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
FormField="string"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:Parameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:ProfileParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:QueryStringParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
QueryStringField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:SessionParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
SessionField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
</FilterParameters>
<InsertParameters>
<asp:ControlParameter
ControlID="string"
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:CookieParameter
ConvertEmptyStringToNull="True|False"
CookieName="string"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:FormParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
FormField="string"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:Parameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:ProfileParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:QueryStringParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
QueryStringField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:SessionParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
SessionField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
</InsertParameters>
<SelectParameters>
<asp:ControlParameter
ControlID="string"
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:CookieParameter
ConvertEmptyStringToNull="True|False"
CookieName="string"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:FormParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
FormField="string"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:Parameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:ProfileParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:QueryStringParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
QueryStringField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:SessionParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
SessionField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
</SelectParameters>
<UpdateParameters>
<asp:ControlParameter
ControlID="string"
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:CookieParameter
ConvertEmptyStringToNull="True|False"
CookieName="string"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:FormParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
FormField="string"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:Parameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:ProfileParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
PropertyName="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:QueryStringParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
QueryStringField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
<asp:SessionParameter
ConvertEmptyStringToNull="True|False"
DefaultValue="string"
Direction="Input|Output|InputOutput|ReturnValue"
Name="string"
SessionField="string"
Size="integer"
Type="Empty|Object|DBNull|Boolean|Char|SByte|
Byte|Int16|UInt16|Int32|UInt32|Int64|UInt64|
Single|Double|Decimal|DateTime|String"
/>
</UpdateParameters>
</asp:ObjectDataSource>
Esta sección contiene dos ejemplos de código. En el primer ejemplo de código se muestra cómo un control GridView puede mostrar datos utilizando un objeto ObjectDataSource en una página web ASP.NET. El segundo ejemplo de código proporciona un ejemplo de objeto comercial de nivel medio que se usa en este y muchos otros ejemplos de código de ObjectDataSource.
En el ejemplo de código siguiente se muestra cómo un control GridView puede presentar datos utilizando un control ObjectDataSource en una página de formularios Web Forms. El control ObjectDataSource identifica el nombre de clase parcial o completo de un objeto comercial con su propiedad TypeName y un método de objeto comercial al que se llama para recuperar datos con su propiedad SelectMethod. En tiempo de ejecución, se crea el objeto y se llama al método utilizando la reflexión. El control GridView enumera la colección IEnumerable que devuelve la propiedad SelectMethod y muestra los datos.
<%@ 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:gridview id="GridView1" runat="server" datasourceid="ObjectDataSource1" /> <asp:objectdatasource id="ObjectDataSource1" runat="server" selectmethod="GetAllEmployees" typename="Samples.AspNet.CS.EmployeeLogic" /> </form> </body> </html>
En el ejemplo de código siguiente se proporciona un ejemplo de objeto comercial de nivel medio que se usa en este y muchos otros ejemplos de código de ObjectDataSource. El ejemplo de código está compuesto por las dos clases básicas siguientes:
-
La clase EmployeeLogic, que es una clase sin estado que encapsula la lógica comercial.
-
La clase NorthwindEmployee, una clase de modelo que sólo contiene las funciones básicas que son necesarias para cargar y conservar datos de la capa de datos.
Se proporciona una clase NorthwindDataException adicional de utilidad.
Este conjunto de clases de ejemplo trabaja con la base de datos Northwind Traders, que está disponible con Microsoft SQL Server y Microsoft Access. Para obtener un ejemplo funcional completo, se deben compilar y utilizar estas clases con los ejemplos de código de formularios Web Forms proporcionados. Para obtener información sobre la forma de instalar la base de datos Northwind Traders, vea Cómo: Instalar bases de datos de ejemplo.
Este ejemplo ha sido diseñado para ofrecer una demostración sencilla y fácil de seguir de uno de los modos de interacción más habituales de los objetos comerciales con un control ObjectDataSource. No es una recomendación de diseño. En algunos ejemplos se agregan otros métodos a la clase EmployeeLogic o NorthwindEmployee o bien se efectúan modificaciones en este conjunto de clases para ofrecer una demostración de conceptos fundamentales.
namespace Samples.AspNet.CS { using System; using System.Collections; using System.Collections.Specialized; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Web.UI; using System.Web.UI.WebControls; // // EmployeeLogic is a stateless business object that encapsulates // the operations one can perform on a NorthwindEmployee object. // public class EmployeeLogic { // Returns a collection of NorthwindEmployee objects. public static ICollection GetAllEmployees () { ArrayList al = new ArrayList(); ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"]; SqlDataSource sds = new SqlDataSource(cts.ConnectionString, "SELECT EmployeeID FROM Employees"); try { IEnumerable IDs = sds.Select(DataSourceSelectArguments.Empty); // Iterate through the Enumeration and create a // NorthwindEmployee object for each ID. foreach (DataRowView row in IDs) { string id = row["EmployeeID"].ToString(); NorthwindEmployee nwe = new NorthwindEmployee(id); // Add the NorthwindEmployee object to the collection. al.Add(nwe); } } finally { // If anything strange happens, clean up. sds.Dispose(); } return al; } public static NorthwindEmployee GetEmployee(object anID) { return new NorthwindEmployee(anID); } public static void UpdateEmployeeInfo(NorthwindEmployee ne) { bool retval = ne.Save(); if (! retval) { throw new NorthwindDataException("UpdateEmployee failed."); } } public static void DeleteEmployee(NorthwindEmployee ne) { } } public class NorthwindEmployee { public NorthwindEmployee () { ID = DBNull.Value; lastName = ""; firstName = ""; title=""; titleOfCourtesy = ""; reportsTo = -1; } public NorthwindEmployee (object anID) { this.ID = anID; ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"]; SqlConnection conn = new SqlConnection (cts.ConnectionString); SqlCommand sc = new SqlCommand(" SELECT FirstName,LastName,Title,TitleOfCourtesy,ReportsTo " + " FROM Employees " + " WHERE EmployeeID = @empId", conn); // Add the employee ID parameter and set its value. sc.Parameters.Add(new SqlParameter("@empId",SqlDbType.Int)).Value = Int32.Parse(anID.ToString()); SqlDataReader sdr = null; try { conn.Open(); sdr = sc.ExecuteReader(); // This is not a while loop. It only loops once. if (sdr != null && sdr.Read()) { // The IEnumerable contains DataRowView objects. this.firstName = sdr["FirstName"].ToString(); this.lastName = sdr["LastName"].ToString(); this.title = sdr["Title"].ToString(); this.titleOfCourtesy = sdr["TitleOfCourtesy"].ToString(); if (! sdr.IsDBNull(4)) { this.reportsTo = sdr.GetInt32(4); } } else { throw new NorthwindDataException("Data not loaded for employee id."); } } finally { try { if (sdr != null) sdr.Close(); conn.Close(); } catch (SqlException) { // Log an event in the Application Event Log. throw; } } } private object ID; private string lastName; public string LastName { get { return lastName; } set { lastName = value; } } private string firstName; public string FirstName { get { return firstName; } set { firstName = value; } } private string title; public String Title { get { return title; } set { title = value; } } private string titleOfCourtesy; public string Courtesy { get { return titleOfCourtesy; } set { titleOfCourtesy = value; } } private int reportsTo; public int Supervisor { get { return reportsTo; } set { reportsTo = value; } } public bool Save () { return true; } } internal class NorthwindDataException: Exception { public NorthwindDataException(string msg) : base (msg) { } } }
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Nota