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:

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:

  1. 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.

  2. 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:

    1. Busca el nombre completo del tipo de datos, por ejemplo, System.Int32.

    2. 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.

    3. 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.

    4. 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.

    5. Si no existe un tipo de datos de retroceso, los datos dinámicos no muestran datos.

  3. 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

FieldTemplateUserControl

Clase base de todos los controles FieldTemplateUser.

Otros temas

Agregar comportamiento dinámico a los controles enlazados a datos de ASP.NET

Información general sobre la plantilla de página y la técnica scaffolding de datos dinámicos de ASP.NET