Botones de cuadrícula

Los botones de la barra de herramientas de cuadrícula controlan cómo los usuarios interactúan con los registros en un MainGrid o SubGrid. Los botones se colocan dentro del Buttons fragmento de renderizado y aparecen automáticamente en la barra de herramientas de la cuadrícula.

Categorías de botones

Existen tres categorías de botones de cuadrícula según cómo gestionan las operaciones de registro:

  • Botones de diálogo — Abre un formulario en un diálogo para crear o editar registros en línea sin salir de la página.
  • Botones de navegación — Navega a una URL de página separada para crear o editar registros.
  • Botones de acción — Realizar operaciones como eliminar, vincular o desvincular registros directamente.

Elegir el enfoque adecuado

Elige la forma del botón en función de cuánto contexto necesita el usuario y cuánta nueva situación haya involucrada. Los tres cubos de abajo cubren los casos típicos.

  • Diálogo (en línea) — Úsalo NewRecordGridButton / OpenRecordGridButton cuando el formulario encaja en un solo diálogo y el usuario se beneficia de permanecer en la página actual (por ejemplo, añadiendo un contacto a un registro de cuenta sin perder las demás ediciones no guardadas de la cuenta). Combina con Behavior="GridActionBehavior.WithGridContext" (el valor predeterminado) para integrar la partida guardada del nuevo registro en el commit transaccional del contexto padre.
  • Navegar (página completa) — Usar NavigateNewRecordGridButton / NavigateOpenRecordGridButton cuando crear o editar necesita una superficie más rica que la que un diálogo puede ofrecer cómodamente: muchos campos, múltiples pestañas, registros relacionados propios, archivos adjuntos o URLs compartibles. La ruta posee su propio RecordContext, por lo que la cuadrícula principal no necesita ser consciente de la complejidad del formulario.
  • Asistente (diálogo de varios pasos) — Úsalo NewRecordGridButton FormType="FormType.WizardForm" cuando el formulario tiene suficientes campos para que una pantalla se sienta saturada, pero las entradas son lo bastante interdependientes como para que dividir entre páginas merezca la pena el coste de navegación. Forma común: la página 1 captura la identidad / clasificación, la página 2 captura detalles que dependen de las elecciones de la página 1.

Guardar flujo y modos de comportamiento

Cada botón de cuadrícula basado en diálogo (NewRecordGridButton, OpenRecordGridButton, el par de enlace / desenlace M2M) acepta un Behavior parámetro que controla cuándo se activa la llamada subyacente de Dataverse. Los dos valores se corresponden con secuencias de peticiones materialmente diferentes:

Comportamiento = Inmediatamente

El botón de guardar del diálogo emite la solicitud de crear / actualizar / asociar / desasociar directamente a Dataverse mediante ExecuteMultipleAsync, actualiza la cuadrícula y luego cierra el diálogo. El entorno MainContext / RecordContext (si es que existe) no ve el cambio — ya está comprometido.

  1. El usuario hace clic en guardar en el diálogo.
  2. El diálogo valida y luego se envía una o más OrganizationRequests a ExecuteMultipleAsynctravés de .
  3. Retornos de servidores; la cuadrícula se refresca; El diálogo se cierra.

Elige esto cuando: el diálogo esté solo (no haya un botón de guardar a nivel de página cercano), o el usuario realmente quiera que cada acción a nivel de fila sea un commit propio. Cada guardado aquí es independiente: la finalización parcial de un flujo de trabajo multifila permanece en el servidor.

Comportamiento = ConContextoDeCuadrícula (por defecto)

El botón de guardar del diálogo activa la solicitud en la cola pendiente de la cuadrícula (_rowsToCreate / _rowsToUpdate en Blazor, el equivalente en React en useGridContext()) y cierra el diálogo. La llamada real de Dataverse no se activa hasta que se hace clic en el botón de guardar de / RecordContextque rodea.MainContext

  1. El usuario hace clic en Guardar en el diálogo → registro (o actualizar/asociar/disociar) se coloca en cola en la cuadrícula.
  2. Se cierra el diálogo. El contexto padre de la página cambia a IsDirty=true; el botón de guardar a nivel de página lo habilita.
  3. El usuario hace clic en el Guardar a nivel de página → cada cambio de cuadrícula en cola + la actualización propia del registro padre + todas las solicitudes pendientes de los demás descendientes se agrupan en un solo ExecuteMultipleAsync.
  4. Retornos de servidores; la página se actualiza; colas despejadas; IsDirty se vuelve a girar.

Elige esto cuando: la página tiene un padre RecordContext con su propio botón de guardar: el usuario espera una semántica de "guardar toda la página", y un commit parcial (el padre guardado, filas hijas no) sería un resultado peor que volver a juntar todo. Por esa razón, es el predeterminado.

Por defecto es WithGridContext

WithGridContext es el predeterminado para todos los botones basados en diálogo — Inmediatamente es opt-in. Si tu cuadrícula está fuera de un contexto padre (una página de listado independiente sin registro encima), la cola no tiene a dónde vaciar y el diálogo vuelve automáticamente a la semántica de Inmediatamente.

NuevoRegistroBotón de la Rejilla

Abre un formulario de diálogo para crear un nuevo registro. Requiere un TForm parámetro de tipo que especifique el componente Razor para renderizar como la forma.

Utilízalo Location para controlar dónde aparece el diálogo: DialogLocation.Center (por defecto) o DialogLocation.Right (panel lateral).

Úsase FormType para elegir entre una forma estándar (FormType.Form) o un asistente de varios pasos (FormType.WizardForm).

Úsalo Behavior para controlar cuándo se crea el registro: GridActionBehavior.Immediately guarda en Dataverse inmediatamente, mientras GridActionBehavior.WithGridContext que (por defecto) pospone la partida hasta que el contexto padre esté comprometido.

React
Blazor

Ejemplo de Formulario Estándar

El TForm parámetro tipo especifica un componente Razor que define la disposición del formulario. Un formulario estándar es simplemente un componente de Razor que contiene componentes del editor. Puede incluir pestañas, secciones o cualquier diseño que necesites.

React
Blazor

Ejemplo de Formulario de Asistente

Una forma de asistente divide el proceso de creación en varios pasos. Define cada paso usando WizardRecordPage componentes. Úsalo FormType="FormType.WizardForm" en el botón para activar el modo mago.

React
Blazor

Nota

Al usar una forma de asistente, se asigna FormType="FormType.WizardForm" en el NewRecordGridButton. El asistente muestra la navegación Atrás/Siguiente y valida cada página antes de avanzar.

Validación por página

Cada uno WizardRecordPage se asigna por defecto ForceSuccessfulValidationBeforeSave="true"a: el botón Siguiente del asistente ejecuta los validadores de la página activa antes de avanzar y cancela la transición si algún campo requerido está vacío o no es válido. Configura false páginas que solo contengan campos opcionales para que el usuario pueda saltárselos. El botón Terminar de la última página siempre valida independientemente de esta bandera — el rechazo del creador desde el servidor es la única forma de evitarlo.

React
Blazor

Registro compartido entre páginas

Todos los WizardRecordPage componentes dentro de uno NewRecordGridButton comparten el mismo objeto subyacente TableRecord : editar firstname en la página 1 y annualincome en la página 2 termina en una única carga útil de creación al final. Los s por página RecordContextse vinculan a la misma instancia de registro, por lo que la navegación entre pasos preserva las ediciones en curso.

OpenRecordGridButton

Abre un formulario de diálogo para editar el(los) registro(s) seleccionado(s). Por ejemplo NewRecordGridButton, requiere un TForm parámetro de tipo. Cuando se seleccionan varios registros, el formulario muestra campos compartidos y aplica cambios a todos los registros seleccionados.

El botón de edición se activa automáticamente cuando una fila hace doble clic en la cuadrícula. Ponlo AllowNavigateOnRowDoubleClick="false" en la cuadrícula para suprimir el controlador de doble clic.

Por defecto, la columna de nombre principal de la tabla también se muestra como un hipervínculo en cada fila, y al hacer clic en el enlace se activa la misma acción de edición que el doble clic. Configura AllowNavigateOnPrimaryNameClick="false" en la cuadrícula para suprimir el hipervínculo y renderizar la celda del nombre principal como texto plano. El hipervínculo solo aparece cuando se registra un OpenRecordGridButton o, NavigateOpenRecordGridButton por lo que las cuadrículas sin botón de edición no se ven afectadas.

React
Blazor

NavegarNuevoRegistroBotón de la Rejilla

Navega a una URL para crear un nuevo registro. Configura el Url parámetro en la página de destino. Cuando se usa en un SubGrid, el contexto de relación del registro padre se añade automáticamente como parámetros de cadena de consulta.

Utiliza el OnClick callback para establecer dinámicamente la URL según el contexto de la cuadrícula. Esto es útil para cuadrículas multi-tabla donde la URL depende de la tabla de la vista seleccionada.

React
Blazor

NavegarAbrirRegistroBotón de la Cuadrícula

Navega a una URL para editar el registro seleccionado. El Url parámetro es compatible {0} como un marcador de posición para el ID del registro seleccionado.

React
Blazor

NavegarRegistroBotón de la Rejilla

Un botón de navegación de propósito general con una etiqueta, icono y URL personalizados. Usa esto para acciones de navegación personalizadas que no encajen con el nuevo patrón o edición.

React
Blazor

BorrarRegistroBotón de la RejillaT

Elimina los registros seleccionados tras pedir confirmación. Se usa Mode para controlar si los registros se eliminan BulkOperationMode.Individually (uno a uno con el progreso) o en un solo lote.

React
Blazor

LinkExistentingRecordGridButton

Abre un diálogo de búsqueda para encontrar y asociar registros existentes mediante una relación muchos-a-muchos. Solo aplicable en SubGrid relaciones N:N.

React
Blazor

DesvincularExistenciaRegistroBotón de la Cuadrícula

Desvincula los registros seleccionados de una relación de muchos a muchos tras pedir confirmación. Solo aplicable en SubGrid relaciones N:N.

React
Blazor

GridButton

Un botón totalmente personalizado con una OnClick callback que recibe el archivo actual GridContext. Usa esto para implementar acciones personalizadas en la barra de herramientas.

React
Blazor

Parámetros comunes

  • Behavior — Controla si la operación se ejecuta inmediatamente (GridActionBehavior.Immediately) o se diferió hasta que el contexto padre guarde (GridActionBehavior.WithGridContext).
  • Mode — Para los botones de eliminar/enlazar/desvincular, controla si las operaciones masivas se ejecutan individualmente con retroalimentación de progreso o en una sola solicitud por lote.
  • IsButtonEnabled / IsButtonVisible — Predica que controla el estado del botón en función de la selección de fila actual.
Reaccionar Blazor

GridButton Clase

Parámetros

Nombre
Tipo
Default
Descripción
AppearanceAppearance?
Stealth
Apariencia visual del botón de la barra de herramientas. Valores predeterminados de Appearance.Stealth Así que el botón se lee como transparente en reposo y solo pinta un fondo al pasar el cursor — coincidiendo con los botones de Actualizar y Configuración de la cuadrícula. El CSS con alcance de la cuadrícula (FluentGridBase.razor.css) pines --llenado-neutro-sigilo-descanso a Transparente, así que el estado de descanso de Sigilo realmente no tiene relleno. Anulación por botón cuando un Custom Action requiere un peso visual diferente (por ejemplo, Appearance.Accent para una llamada a la acción primaria).
Enabledbool?
True
Anula el estado habilitado del botón independientemente del GridButton.IsButtonEnabled resultado del predicado.
IconIcon?
Un icono opcional mostrado en el botón.
IsButtonEnabledFunc<IEnumerable<GridRowContext>, bool>
Un predicado evaluado frente a la selección de fila actual para determinar si el botón está activado.
IsButtonVisibleFunc<IEnumerable<GridRowContext>, bool>
Un predicado evaluado frente a la selección de fila actual para determinar si el botón es visible.
IsOpenRecordButtonbool
False
Especifica que este es el botón 'Editar' para la cuadrícula. Solo un botón debería tener esta propiedad configurada como 'verdadero' en una cuadrícula. El manejador de eventos de este botón se llama cuando una fila se hace 'doble clic' en la cuadrícula.
Labelstring?
La etiqueta de texto mostrada en el botón.
Tooltipstring?
Una descripción emergente opcional se muestra cuando el usuario se queda suspendido sobre el botón.
Nombre: Appearance
Tipo: Appearance?
Default: Stealth
Descripción: Apariencia visual del botón de la barra de herramientas. Valores predeterminados de Appearance.Stealth Así que el botón se lee como transparente en reposo y solo pinta un fondo al pasar el cursor — coincidiendo con los botones de Actualizar y Configuración de la cuadrícula. El CSS con alcance de la cuadrícula (FluentGridBase.razor.css) pines --llenado-neutro-sigilo-descanso a Transparente, así que el estado de descanso de Sigilo realmente no tiene relleno. Anulación por botón cuando un Custom Action requiere un peso visual diferente (por ejemplo, Appearance.Accent para una llamada a la acción primaria).
Nombre: Enabled
Tipo: bool?
Default: True
Descripción: Anula el estado habilitado del botón independientemente del GridButton.IsButtonEnabled resultado del predicado.
Nombre: Icon
Tipo: Icon?
Descripción: Un icono opcional mostrado en el botón.
Nombre: IsButtonEnabled
Tipo: Func<IEnumerable<GridRowContext>, bool>
Descripción: Un predicado evaluado frente a la selección de fila actual para determinar si el botón está activado.
Nombre: IsButtonVisible
Tipo: Func<IEnumerable<GridRowContext>, bool>
Descripción: Un predicado evaluado frente a la selección de fila actual para determinar si el botón es visible.
Nombre: IsOpenRecordButton
Tipo: bool
Default: False
Descripción: Especifica que este es el botón 'Editar' para la cuadrícula. Solo un botón debería tener esta propiedad configurada como 'verdadero' en una cuadrícula. El manejador de eventos de este botón se llama cuando una fila se hace 'doble clic' en la cuadrícula.
Nombre: Label
Tipo: string?
Descripción: La etiqueta de texto mostrada en el botón.
Nombre: Tooltip
Tipo: string?
Descripción: Una descripción emergente opcional se muestra cuando el usuario se queda suspendido sobre el botón.

Eventos

Nombre
Tipo
Descripción
OnClickEventCallback<GridContext>
Dispara cuando se pulsa el botón, proporcionando la corriente Components.GridContext al manejador.
Nombre: OnClick
Tipo: EventCallback<GridContext>
Descripción: Dispara cuando se pulsa el botón, proporcionando la corriente Components.GridContext al manejador.