GridColumn / GridColumns

Por defecto, MainGrid y SubGrid renderizar el conjunto de columna que devuelva la vista activa de Dataverse. El GridColumn componente te permite tomar el control explícito: cuando se declaran uno o más GridColumn hijos, la cuadrícula renderiza solo esas columnas, en el orden declarado, y la proyección del lado del servidor se reescribe para obtener exactamente el conjunto declarado. Úsalo para reducir una cuadrícula a las columnas que importan para una página específica, reordenarlas, personalizar el ancho / alineación, suministrar plantillas por celda o columnas de superficie que no estén en la vista subyacente — sin editar la vista de Dataverse en sí.

Demo en directo

Un mezclador GridTemplateColumn sobre la contact mesa con tres niños normalesGridColumn.MainGrid La primera celda es sintética — compone un avatar inicial más un nombre en negrita a partir de valores en bruto firstname + lastname extraídos en la proyección mediante DependsOn. Los tres restantes muestran plantillas por celda ChildContent en columnas encuadernadas: un mailto: enlace, un número de teléfono con un icono en línea y una insignia de edad codificada por colores que lee la vía GetValueOrDefault<T>() bruta IntValue para la comparación de umbral. Haz clic en el icono de engranes y activa Editable para ver las columnas EditChildContent de plantilla en acción — la celda de Nombre Completo cambia del renderizado avatar a dos editores lado a TextEdit lado vinculados a firstname + lastname.

Ejemplo de reacción
Ejemplo de Blazor
Cualquiera puede ver los contactos en la cuadrícula de abajo. Inicia sesión para crear, ver y actualizar tus propios contactos.
Todos los contactos
Todos los contactos

Tamaño de página

102050100
Editable
Nombre completo
Correo electrónico
Teléfono
Edad
AM Abagail Miller
---
AP Abdul Pollich
---
AP Abel Parisian
---
AK Abigale Kuvalis
---
AP Adell Paucek
---
AR Adella Roob
---
AW Adolf Weber
---
AT Adonis Torphy
---
AG Agustin Goyette
---
AR Agustin Rau
---
React TypeScript
Razor

Uso básico

Deja los GridColumn componentes dentro de un GridColumns envoltorio bajo la cuadrícula. Los nombres de columnas declarados anulan la proyección de <attribute> FetchXML — el servidor recupera las columnas declaradas aunque no estén en la selección de columna de la vista activa. El TableName parámetro es opcional en modo declarado: cuando se omite, se utiliza el propio TableName parámetro de la cuadrícula (no es necesario repetirlo en cada columna).

React
Blazor

Reemplazar, no añadir

Declarar cualquier GridColumn hijo cambia la cuadrícula a modo reemplazo: las columnas declaradas son todo el conjunto de columnas renderizado Y todo el conjunto de columnas obtenidas. Las columnas de vista no declaradas aquí se eliminan tanto del renderizado como de la proyección del servidor. Si quieres la mayoría de las columnas de vistas con uno o dos ajustes, elimina el wrapper por completo o crea una vista personalizada a través CustomViewDefinitionsde .

Parámetros requeridos

Cada GridColumn declaración tiene:

  • ColumnName — Obligatorio. Nombre lógico de la columna a proyectar. Soporta notación de puntos para columnas de entidades enlazadas con alias (primarycontactid.emailaddress1); el alias debe existir ya como a <link-entity> en el FetchXML de la vista activa.
  • TableName — Opcional. Nombre lógico de la tabla cuyos metadatos describen esta columna. Cuando se omite, recae en la red TableName eléctrica — útil para mantener el margen de consumo breve en cuadrículas de una sola mesa.

Ancho de columna

Úsalo Width para anular el ancho almacenado de la vista. Acepta cualquier longitud CSS — píxeles ("150px"), porcentajes ("20%"), o "auto". Sin un ancho explícito, la cuadrícula vuelve al valor predeterminado derivado de los metadatos y a la distribución natural de la tabla.

React
Blazor

Alineación

Úsala Align para anular la alineación horizontal tanto del cabezal como de las células del cuerpo. Las columnas numéricas y de dinero se alinean por defecto a Align.End (a la derecha) mediante el respaldo basado en metadatos; las columnas booleanas por defecto son Align.Center. Configúralo explícitamente cuando quieras un alineamiento no predeterminado, o para alinear una celda con plantilla personalizada de forma consistente.

React
Blazor

Columnas de Entidades Vinculadas

Las columnas de entidades enlazadas con alias usan notación de puntos que coincide con el alias FetchXML de la vista. El alias debe estar ya definido como a <link-entity> en la vista activa. Al establecer TableName la tabla de origen apunta el alias para que la resolución de metadatos caiga en la entidad correcta. El servidor devuelve estas columnas con su nombre de visualización localizado cualificado para la tabla principal (por ejemplo, "Email (Contacto Principal)") — sin necesidad de humanización en el lado del cliente.

React
Blazor

Plantillas por celda

Suministra ChildContent para renderizar cada celda con marcado personalizado. La plantilla recibe GridRowContext — su PrimaryRecord propiedad expone la fila completa TableRecord (valores de columnas escritos, valores formateados, permisos, todo). Útil para formateo condicional (texto rojo sobre un umbral), iconos, insignias, enlaces o cualquier otra cosa que puedas construir a partir del registro de la fila.

React
Blazor

Registro principal en SubGrids

Cuando la cuadrícula se monta como un SubGrid, GridRowContext.ParentRecord expone el registro de circundante RecordContext(el padre de la SubRed). Accede a ella dentro de una ChildContent plantilla cuando el formato condicional necesite comparar la columna de una fila con la del padre — por ejemplo, resalta contactos que industrycode no coincidan con la cuenta del padre, o etiqueta filas propiedad del propietario del padre. null En un registro independiente MainGrid donde no hay registro padre.

React
Blazor

Paridad de reacción

El lado React supera la misma superficie que cellRendererla hélice de parentRecord 's (CellRendererProps.parentRecord).

CuadrículaPlantillaColumna

Úsalo GridTemplateColumn cuando una columna no se asigna a una sola columna de Dataverse — combina varios valores en bruto en una sola celda, renderiza una insignia de estado en varios campos o emite una celda de acciones puramente decorativas sin ninguna dependencia de datos. A diferencia de , una columna plantilla no ColumnNametiene : declare las columnas por DependsOn las que lee el renderizador y el framework las fusiona en la proyección FetchXML, de modo que los datos llegan GridColumnctx.Row.PrimaryRecord cuando tu plantilla se ejecuta. Recibe ChildContent un GridTemplateColumnContext (usa el Context="ctx" atributo para nombrarlo) que lleva la fila, el padre SubGrid opcional y una consulta preconfigurada DependsOnMetadata con los nombres de columnas que has declarado.

React
Blazor

Columna plantilla vs. Contenido hijo de GridColumn

GridColumn ChildContent Aún así, personaliza una columna acotada — ordenando, editando despacho y el encabezado de columna todos con la clave de su único ColumnName. Busca GridTemplateColumn solo cuando no haya una columna subyacente única a la que vincular (celdas compuestas, celdas de acción decorativa, insignias de estado que combinan varios campos). Mezclar ambos está bien — se entrelazan en orden declarado a lo largo del conjunto de columnas de la cuadrícula.

Columnas decorativas (sin dependencia de datos)

Salta DependsOn completamente cuando la celda muestre contenido puramente decorativo como botones o iconos en línea. La estructura sigue montando la columna en la posición correcta de la tabla renderizada; No se añade nada a la proyección del servidor para esa columna.

React
Blazor

Plantillas de edición en línea

Empareja el modo ChildContent de lectura de a GridTemplateColumncon un EditChildContent para que la columna sea editable cuando el interruptor de Editable de la cuadrícula esté activado. La plantilla de edición recibe un GridTemplateColumnEditContext — mismo contexto de fila que la plantilla de lectura (editCtx.Row.PrimaryRecord, la opcional editCtx.Row.ParentRecord en una SubGrid, la editCtx.DependsOnMetadata consulta) más un asistente imperativoeditCtx.SetValue(columnName, value).

EditChildContent se activa cuando la cuadrícula es editable (AllowEdit="true" en la cuadrícula más el usuario ha cambiado el interruptor Editable en el menú de engranes de la barra de herramientas), la fila no está pendiente-eliminación y la propia columna declara una plantilla de edición. Las columnas decorativas de plantilla que omiten EditChildContent permanecen en modo solo lectura incluso en modo edición — útiles para columnas de acciones que siempre deberían renderizar los mismos botones.

Patrón 1 — Editores estándar de entrada

El caso más común: la celda se compone a partir de varias columnas encotadas, y quieres que el usuario edite cada una. Suelta los editores que coinciden / <NumberEdit> / dentro EditChildContent — el framework encadena el registro principal y la coincidencia EditContextValidator de la fila dentro de ese ámbito, de modo que los editores se registran por sí mismos para el dirty-tracking y la validación exactamente como lo hacen bajo un bound's ChildContent<GridColumn>. <ColumnEdit> <TextEdit> No hace falta cableado extra.

React
Blazor

Patrón 2 — Widget personalizado con SetValue

Cuando la superficie del editor no se asigna 1:1 a una columna de Dataverse — un único cuadro de texto "Primero Último" que se divide en dos columnas, un deslizador vinculado a varios campos porcentuales, un selector personalizado de rango de fechas que escribe inicio + fin — renderiza tu propia entrada y llama editCtx.SetValue(columnName, value) a cada columna afectada. El framework enruta la escritura al correcto AliasedTableRecord (gestionando los nombres de columnas de enlaces de entidades con notación de puntos) y lanza el evento del ValueChanged registro para que el dirty-tracking y la cola de actualización pendiente de la fila detecten el cambio.

React
Blazor

Validación en el camino imperativo

Los editores estándar se EditChildContent registraban automáticamente con las EditContextValidator filas y participaban en la puerta de validación antes de guardar del framework. El editCtx.SetValue camino evita esa canalización — el framework no puede validar valores que no provengan de un editor registrado. Si tu widget personalizado necesita imponer restricciones, ejecuta dentro de la ValueChanged callback antes de llamar SetValue, o recurre al patrón de editor de entrada directa cuando sea posible.

En una SubGrid

Todo lo que se aplica a MainGrid funciona de forma idéntica en SubGrid. Empareja las columnas declaradas con botones de barra de herramientas en el Buttons fragmento de renderizado para una experiencia de edición en línea enfocada con alcance a la colección relacionada del registro padre — y combínalo con @@context.ParentRecord plantillas en celda para formatear condicionalmente que se basa en el archivo padre del SubGrid.

React
Blazor

Referencia de parámetros

Parámetro
Descripción
ColumnName
Obligatorio. Nombre lógico de la columna; Soporta notación de puntos para columnas de entidades enlazadas con aliasing.
TableName
Opcional. Nombre lógico de la tabla cuyos metadatos describen esta columna. Hereda la cuadrícula TableName cuando se omite.
Width
Longitud CSS opcional para el ancho de la columna.
Align
Anulación opcional de alineación horizontal (Align.Start, Align.Center, Align.End). Vuelve al valor predeterminado basado en metadatos cuando se omite.
Title
Anulación opcional de etiqueta de encabezado. Vuelve al nombre de visualización localizado de la columna.
HeaderTooltip
Descripción emergente opcional de cabecera — útil para explicar columnas calculadas o aliasadas. (Nombrado para evitar la colisión insensible a mayúsculas minúsculas con el parámetro bool heredado Tooltip en TemplateColumn.)
Visible
Opcional. false suprime la columna de la tabla renderizada y de la proyección del servidor incluso cuando hay otras columnas declaradas presentes. Por defecto es true.
IsDefaultSortColumn / InitialSortDirection
Opcional. Marca una columna declarada como la orden inicial de la cuadrícula. La dirección de ordenamiento por defecto es ascendente.
ChildContent
Plantilla opcional por celda que recibe GridRowContext. Se renderiza dentro de cada célula corporal cuando se le suministra; accede a la fila a través @@context.PrimaryRecord de y (en una SubGrid) al padre mediante @@context.ParentRecord.
Parámetro: ColumnName
Descripción: Obligatorio. Nombre lógico de la columna; Soporta notación de puntos para columnas de entidades enlazadas con aliasing.
Parámetro: TableName
Descripción: Opcional. Nombre lógico de la tabla cuyos metadatos describen esta columna. Hereda la cuadrícula TableName cuando se omite.
Parámetro: Width
Descripción: Longitud CSS opcional para el ancho de la columna.
Parámetro: Align
Descripción: Anulación opcional de alineación horizontal (Align.Start, Align.Center, Align.End). Vuelve al valor predeterminado basado en metadatos cuando se omite.
Parámetro: Title
Descripción: Anulación opcional de etiqueta de encabezado. Vuelve al nombre de visualización localizado de la columna.
Parámetro: HeaderTooltip
Descripción: Descripción emergente opcional de cabecera — útil para explicar columnas calculadas o aliasadas. (Nombrado para evitar la colisión insensible a mayúsculas minúsculas con el parámetro bool heredado Tooltip en TemplateColumn.)
Parámetro: Visible
Descripción: Opcional. false suprime la columna de la tabla renderizada y de la proyección del servidor incluso cuando hay otras columnas declaradas presentes. Por defecto es true.
Parámetro: IsDefaultSortColumn / InitialSortDirection
Descripción: Opcional. Marca una columna declarada como la orden inicial de la cuadrícula. La dirección de ordenamiento por defecto es ascendente.
Parámetro: ChildContent
Descripción: Plantilla opcional por celda que recibe GridRowContext. Se renderiza dentro de cada célula corporal cuando se le suministra; accede a la fila a través @@context.PrimaryRecord de y (en una SubGrid) al padre mediante @@context.ParentRecord.

Parámetros de GridTemplateColumn

Parámetro
Descripción
Id
Identificador estable opcional. Cuando se omite, el framework genera automáticamente uno en __template-{index} función de la posición de la columna de la plantilla entre las demás plantillas. Transmite un id explícito cuando tus declaraciones puedan reordenarse dinámicamente.
Title
Etiqueta de cabecera requerida. No hay metadatos de columna acotados a partir de los cuales derivar un valor predeterminado.
DependsOn
Opcional. La columna lógica de Dataverse nombra el renderizador que lee de la fila. El framework fusiona estos en la proyección FetchXML para que los datos caigan en ctx.Row.PrimaryRecord. Omitidos/vacíos para celdas decorativas.
SortBy
Opcional. Nombre lógico de columna para ordenar por cuándo se hace clic en la cabecera. Omitido = encabezado no es sortable.
Width
Longitud CSS opcional para el ancho de la columna.
Align
Anulación opcional de alineación horizontal. Por defecto ( Align.Start no hay un tipo de columna basado en metadatos, ya que no hay un tipo de columna subyacente).
Tooltip
Texto de descripción introductiva opcional.
Visible
Opcional. false suprime la columna de la tabla renderizada Y elimina sus DependsOn entradas de la proyección del servidor. Por defecto es true.
ChildContent
Plantilla requerida por celda para recibir GridTemplateColumnContext. Lee la fila a través ctx.Row.PrimaryRecord de (y en una SubGrid, el padre a través de ctx.Row.ParentRecord); use ctx.DependsOnMetadata[name] para metadatos por columna cuando el renderizador lo necesita.
EditChildContent
Plantilla opcional de edición que recibe GridTemplateColumnEditContext. Se invoca en lugar de ChildContent cuando la cuadrícula está en modo de edición en línea y la fila es mutable. Mismo contexto de fila que la plantilla de lectura más editCtx.SetValue(name, value) para escrituras imperativas. Consulta las Plantillas de Edición en línea arriba para los dos patrones de autor.
Parámetro: Id
Descripción: Identificador estable opcional. Cuando se omite, el framework genera automáticamente uno en __template-{index} función de la posición de la columna de la plantilla entre las demás plantillas. Transmite un id explícito cuando tus declaraciones puedan reordenarse dinámicamente.
Parámetro: Title
Descripción: Etiqueta de cabecera requerida. No hay metadatos de columna acotados a partir de los cuales derivar un valor predeterminado.
Parámetro: DependsOn
Descripción: Opcional. La columna lógica de Dataverse nombra el renderizador que lee de la fila. El framework fusiona estos en la proyección FetchXML para que los datos caigan en ctx.Row.PrimaryRecord. Omitidos/vacíos para celdas decorativas.
Parámetro: SortBy
Descripción: Opcional. Nombre lógico de columna para ordenar por cuándo se hace clic en la cabecera. Omitido = encabezado no es sortable.
Parámetro: Width
Descripción: Longitud CSS opcional para el ancho de la columna.
Parámetro: Align
Descripción: Anulación opcional de alineación horizontal. Por defecto ( Align.Start no hay un tipo de columna basado en metadatos, ya que no hay un tipo de columna subyacente).
Parámetro: Tooltip
Descripción: Texto de descripción introductiva opcional.
Parámetro: Visible
Descripción: Opcional. false suprime la columna de la tabla renderizada Y elimina sus DependsOn entradas de la proyección del servidor. Por defecto es true.
Parámetro: ChildContent
Descripción: Plantilla requerida por celda para recibir GridTemplateColumnContext. Lee la fila a través ctx.Row.PrimaryRecord de (y en una SubGrid, el padre a través de ctx.Row.ParentRecord); use ctx.DependsOnMetadata[name] para metadatos por columna cuando el renderizador lo necesita.
Parámetro: EditChildContent
Descripción: Plantilla opcional de edición que recibe GridTemplateColumnEditContext. Se invoca en lugar de ChildContent cuando la cuadrícula está en modo de edición en línea y la fila es mutable. Mismo contexto de fila que la plantilla de lectura más editCtx.SetValue(name, value) para escrituras imperativas. Consulta las Plantillas de Edición en línea arriba para los dos patrones de autor.