Información general sobre las plantillas de campos de datos dinámicos de ASP.NET
Actualización: noviembre 2007
Las plantillas de campo de datos dinámicos de ASP.NET son controles de usuario ASP.NET que asignan controles de datos a tipos de datos de un modelo de datos. Las plantillas de campo proceden de la clase FieldTemplateUserControl, que da acceso a campos de datos, columnas de datos y metadatos de los modelos de datos. Los proyectos de datos dinámicos proporcionan de forma predeterminada algunas plantillas de campo predeterminadas, pero puede modificarlas o crear plantillas de campo personalizadas. En este tema de información general se describen:
Características:
Información general.
Plantillas de campo predeterminadas.
Uso de las plantillas de campo.
Cómo se representan las plantillas de campo.
Características
Los datos dinámicos utilizan plantillas de campo para representar campos de datos individuales de un modelo de datos.
Los datos dinámicos permiten:
Modificar las plantillas de campo predeterminadas.
Crear plantillas de campo personalizadas.
Información general
Los datos dinámicos admiten aplicaciones web controladas por datos. Si se compara el acceso a los datos mediante los controles de origen de datos ASP.NET y los controles de datos existentes, como los controles ListView y GridView, los datos dinámicos pueden requerir bastante menos código. Por ejemplo, la tabla Products de la base de datos Northwind tiene claves externas en las tablas Categories y Suppliers. Mostrar una relación como esta mediante el control GridView o ListView requiere el conocimiento del esquema de base de datos, la configuración manual de los controles y posiblemente la escritura de código.
Sin embargo, leyendo el esquema de base de datos, los datos dinámicos pueden obtener información sobre los tipos de datos y las claves externas. Los datos dinámicos proporcionan controles de datos ASP.NET que tienen en cuenta el esquema de base de datos, que están configurados para facilitarle el acceso y la manipulación de los datos. Para reemplazar la representación predeterminada de los controles GridView y DetailsView facilite manualmente el código para la representación en cada página. Las plantillas de campo proporcionan un método sencillo para cambiar globalmente la representación predeterminada de los controles DetailsView y GridView.
Las plantillas de campo se utilizan en controles de datos dinámicos para mostrar campos de datos individuales. Los datos dinámicos utilizan plantillas de campo predeterminadas para crear la representación predeterminada a fin de mostrar y editar datos. Puede personalizar las plantillas de campo predeterminadas o crear otras nuevas.
Por ejemplo, si utiliza las plantillas de campo con la tabla Products de la base de datos Northwind, puede mostrar el nombre de categoría en lugar del identificador de categoría, proporcionar un cuadro de lista desplegable en el modo de edición y vincular a otras páginas, por ejemplo páginas de detalle que muestren datos relacionados.
Para obtener información sobre cómo crear controles de datos enriquecidos que tienen en cuenta el esquema de base de datos, vea Agregar comportamiento dinámico a los controles enlazados a datos de ASP.NET.
Controles de datos dinámicos que utilizan plantillas de campo
Los controles de datos dinámicos que utilizan plantillas de campo para representar automáticamente datos basados en el tipo de datos incluyen los siguientes:
DynamicControl. Utilizado en FormView, ListView y en cualquier control como GridView y DetailsView que admita el uso de plantillas para mostrar y modificar datos del modelo de datos. Este control también permite el uso de plantillas en columnas de datos. Para obtener más información, vea Cómo: Usar datos dinámicos de ASP.NET en controles enlazados a datos con plantillas.
ForeignKey.ascx. Una plantilla de campo predeterminada que se utiliza para mostrar columnas de clave externa. La propiedad href se puede exponer y obtener acceso a ella a través de los objetos DynamicControl y DynamicField.
Children.ascx. Una plantilla de campo predeterminada que se utiliza para mostrar columnas de clave externa. Las propiedades AllowNavigation y href se pueden establecer a través de los objetos DynamicField y DynamicControl.
DynamicField. Aunque DynamicField es la clase DataControlField, se menciona aquí porque se utiliza en DetailsView y en controles de datos GridView para mostrar, modificar y agregar lógica de validación al modelo de datos. Para obtener más información, vea Cómo: Agregar comportamiento dinámico a controles enlazados a datos mediante DynamicField.
Plantillas de campo predeterminadas
Las plantillas de campo predeterminadas son plantillas de campo que están integradas en una aplicación web de datos dinámicos. Como ejemplo de estas de plantillas de campo predeterminadas se incluyen:
_
ForeignKey_Edit.ascx — Se usa para modificar campos que tienen una relación de varios a uno.
DateTime.ascx — Muestra el tipo de datos DateTime como texto.
Los datos dinámicos proporciona plantillas de campo predeterminadas que representan tipos de datos como Booleano, Decimal, entero y texto.
Para obtener más información sobre las plantillas de campo predeterminadas, vea Plantillas de campos predeterminados de datos dinámicos de ASP.NET.
Usar plantillas de campo
Para implementar una plantilla de campo, obtenga valores de la base de datos y muéstrelos, obtenga el valor mediante el método IBindableControl.ExtractValues y de acceso al control DataControl.
Los datos dinámicos permiten personalizar las plantillas de campo predeterminadas o crear nuevas plantillas de campo. Si personaliza una plantilla de campo predeterminada, los datos dinámicos utilizarán las plantillas de campo predeterminadas que personalizó.
Personalizar cómo muestran datos las plantillas de campo predeterminadas
Las plantillas de campo predeterminadas son controles de usuario ASP.NET que se asignan a tipos de datos de un modelo de datos. Estos controles proceden de la clase FieldTemplateUserControl, que habilita el acceso a campos de datos, columnas de base de datos y metadatos.
Puede modificar las plantillas de campo predeterminadas para cambiar cómo representan los datos los controles de datos. Por ejemplo, puede cambiar el color de primer plano y de fondo del texto que se muestra en un control de datos que utiliza las plantillas de campo predeterminadas. Para obtener más información, vea Cómo: Personalizar las plantillas de campos predeterminados de datos dinámicos de ASP.NET.
Crear plantillas de campo personalizadas
También puede crear plantillas de campo personalizadas. Para hacerlo, cree un control de usuario ASP.NET procedente de la clase FieldTemplateUserControl. Agregue una propiedad UIHint que asigne el campo de datos al nuevo control creado para que se utilice en lugar de la plantilla de campo predeterminada.
Para obtener información sobre cómo crear una plantilla de campo personalizada, vea Cómo: Personalizar la visualización de campos de datos en el modelo de datos. Para obtener información sobre cómo utilizar la propiedad UIHint, vea Cómo: Personalizar la apariencia y el comportamiento de los campos de datos en un control de datos dinámicos.
Cómo se representan las plantillas de campo
Los datos dinámicos representan las plantillas de campo personalizadas y predeterminadas en el modo de presentación, modificación e inserción. Los datos dinámicos usan reglas de búsqueda para determinar qué plantilla de campo deben representar. La regla de búsqueda que utilizan las plantillas de campo depende de si el control está en el modo de presentación, modificación o inserción. Por ejemplo, si los datos de la columna son un valor booleano y el control de datos está en el modo de presentación, los datos dinámicos representan Boolean.ascx, la plantilla de campo predeterminada que muestra los tipos de datos booleanos. Sin embargo, si el control de datos está en modo de edición, los datos dinámicos representan Boolean_Edit.ascx, la plantilla de campo que permite la edición de los tipos de datos booleanos. Si el control de datos está en el modo de inserción, los datos dinámicos representan Boolean_Insert.ascx, la plantilla de campo que permite a los usuarios insertar tipos de datos booleanos.
Si un campo de datos del modelo de datos tiene un atributo UIHint asociado, es decir, si se especifica una plantilla de campo personalizada, los datos dinámicos buscan un control basado en el nombre UIHint. Por ejemplo, si el atributo UIHint especifica MyTemplate, los datos dinámicos buscan la plantilla de campo denominada MyTemplate.ascx o MyTemplate_Edit.ascx si el control está en el modo de edición, o MyTemplate_Insert.ascx si el control está en el modo de inserción. Si no se encuentran dichos controles, los datos dinámicos adoptan como valor predeterminado las plantillas de campo predeterminadas.
Reglas de búsqueda
Los datos dinámicos inician la búsqueda determinando el modo de las plantillas de campo. Para cada modo, los datos dinámicos aplican un conjunto de reglas de búsqueda.
Búsqueda del modo de presentación
A continuación se enumeran las reglas de búsqueda que utilizan los datos dinámicos para representar las plantillas de campo en el modo de presentación:
Si existen metadatos UIHint (es decir, si existe una plantilla de campo personalizada), los datos dinámicos buscan un control basado en el nombre del control de usuario y la propiedad DataTypeAttribute definida en las propiedades DataTypeAttribute y UIHint. Los datos dinámicos no muestran todos los tipos de datos de forma predeterminada. Por ejemplo, los tipos de datos Byte[] como los tipos binario, de marca de tiempo o de imagen no se representan de forma predeterminada. Para obtener más información sobre los tipos de datos que los datos dinámicos muestran de forma predeterminada, vea Plantillas de campos predeterminados de datos dinámicos de ASP.NET. Para obtener información sobre cómo mostrar los tipos de datos personalizados, vea DataTypeAttribute.
Los datos dinámicos determinan el tipo de datos a partir de la columna de la base de datos y buscan un control basado en el tipo de datos. El nombre del tipo de datos se determina y utiliza en el orden siguiente:
Busca el nombre completo del tipo de datos, por ejemplo, System.Int32.
Si no se encuentra el nombre completo del tipo de datos, los datos dinámicos buscan el nombre simple del tipo de datos, por ejemplo, int32.
Si no se encuentra el nombre del tipo de datos simple, buscan los casos especiales definidos en la tabla de datos. Por ejemplo, si no se encuentra un tipo de datos simple como Int32, los datos dinámicos buscan Integer, el caso especial definido en la tabla de datos. Si no se encuentra el tipo de datos simple String, buscan Text, el caso especial de String.
Si no se encuentra un caso especial y existe un tipo de datos de retroceso, buscan un tipo de datos de retroceso. Los datos dinámicos utilizan el tipo de datos de retroceso para realizar la búsqueda desde el principio.
Si no existe un tipo de datos de retroceso, los datos dinámicos no muestran datos.
Si el campo es un campo de clave externa, los datos dinámicos representan ForeignKey.ascx, la plantilla de campo predeterminada utilizada para una relación de varios a uno o Children.ascx, el campo predeterminado utilizado para una relación de uno a varios.
Si no se encuentra ningún control de plantilla de campo, los datos dinámicos muestran un mensaje de error que indica que no se encontró ninguna plantilla de campo y no se muestra ningún dato.
Búsqueda del modo de edición
El modo de edición busca reglas que son idénticas a las reglas del modo de presentación pero con la siguiente excepción. Si la plantilla de campo está en el modo de edición, los datos dinámicos buscan una plantilla de campo "_Edit" (por ejemplo, MyTemplate_Edit) y aplican las reglas; en caso contrario, adoptan de forma predeterminada el modo de presentación (solo lectura).
Búsqueda del modo de inserción
El modo de edición busca reglas que son idénticas a las reglas del modo de presentación pero con la siguiente excepción. Si la plantilla de campo está en el modo de inserción, los datos dinámicos buscan una plantilla de campo _Insert (por ejemplo, MyTemplate_Insert) y aplican las reglas; en caso contrario, buscan una plantilla de campo _Edit.
Nota: |
---|
Los controles de usuario de "_Insert.ascx" no se proporcionan de forma predeterminada. |
Tipo de datos de retroceso |
Tipo de datos |
---|---|
Decimal |
Float, Double. |
Int |
Int16, byte, Long. |
String |
Char, Int, Decimal, GUID, DateTime, DateTimeOffset, TimeSpan. |
Referencia de clase
Clase |
Descripción |
---|---|
Clase base de todos los controles FieldTemplateUser. |
Otros temas
Agregar comportamiento dinámico a los controles enlazados a datos de ASP.NET