El MainGrid componente es una cuadrícula independiente para mostrar registros de Dataverse. A diferencia de SubGrid, no requiere un padre RecordContext — carga registros directamente desde una tabla o vista especificada.
Demo en directo
Un overtable independiente MainGridcontact conectado por cable a dos vistas personalizadas: Contactos activos y Mis contactos. Usa el desplegable del selector de vistas para cambiar entre ellos, escribe en el cuadro de búsqueda para filtrar, haz clic en una cabecera de columna para ordenar y usa el pie de página para hojear los resultados. No se requiere ningún padre RecordContext — la red carga sus registros directamente desde las vistas proporcionadas.
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.
Mis contactosTodos los contactos
Mis contactosTodos los contactos
Tamaño de página
102050100
Nombre completo
Teléfono móvil
Correo electrónico
Nombre de la empresa
Edad
Abagail Miller
(501) 801-9303
Abagail_Miller30@yahoo.com
Lowe Inc
52
Abdul Pollich
(319) 579-4439
Abdul73@yahoo.com
Wiza, Bradtke and Hintz
54
Abel Parisian
(631) 444-9854
Abel84@gmail.com
Raynor - Lakin
32
Abigale Kuvalis
(369) 810-9954
Abigale71@gmail.com
Murazik Group
65
Adell Paucek
(260) 615-0566
Adell99@yahoo.com
Windler, Toy and D'Amore
40
Adella Roob
(535) 638-9390
Adella.Roob88@hotmail.com
Pollich - Kling
39
Adolf Weber
(978) 300-6533
Adolf.Weber10@gmail.com
West Group
20
Adonis Torphy
(842) 804-9308
Adonis_Torphy35@hotmail.com
Mohr and Sons
58
Agustin Goyette
(374) 932-0000
Agustin_Goyette@gmail.com
Lebsack, Homenick and Carter
25
Agustin Rau
(986) 867-9045
Agustin_Rau@gmail.com
Lehner Group
22
React TypeScript
Razor
Carga por nombre de tabla
Configura el TableName parámetro para que cargue automáticamente todas las vistas públicas de esa tabla. La primera vista predeterminada se selecciona inicialmente.
React
<MainGrid tableName="contact" />Blazor
<MainGrid TableName="contact" />
Carga por identificadores de vista
Usar ViewIds y DefaultViewId controlar exactamente qué vistas están disponibles y cuál se selecciona al cargar. También puedes proporcionar CustomViewDefinitions FetchXML en línea para definir vistas directamente en código.
<MainGrid ViewIds="_viewIds"
DefaultViewId="@(new Guid("..."))">
</MainGrid>
@code {
private List<Guid> _viewIds = new List<Guid>
{
new Guid("..."),
new Guid("..."),
};
}
Vistas personalizadas con FetchXML
Úsalo CustomViewDefinitions para definir vistas con consultas personalizadas de FetchXML. Esto es útil para vistas que incluyen filtros basados en el usuario actual, entidades vinculadas u otros criterios dinámicos.
Nota
El Id para una costumbre GridViewDefinition debe ser un GUID aleatorio único que no corresponda a una vista existente de Dataverse. Si coincide con un ID de vista existente, la vista Dataverse tendrá prioridad y la definición personalizada será ignorada.
private List<GridViewDefinition> _customViews = new List<GridViewDefinition>
{
new GridViewDefinition
{
Id = new Guid("..."),
TableName = "contact",
DisplayName = "Todos los contactos",
FetchXml = @"<fetch>
<entity name='contact'>
<attribute name='fullname' />
<attribute name='emailaddress1' />
<order attribute='fullname' />
</entity>
</fetch>",
Columns = new List<ViewColumn>
{
new ViewColumn { ColumnName = "fullname", Width = 200 },
new ViewColumn { ColumnName = "emailaddress1", Width = 250 },
}
}
};
DisplayName
Configura DisplayName en a GridViewDefinition para proporcionar una etiqueta predeterminada para la vista en el selector desplegable sin requerir una entrada de archivo de localización. Si existe una clave de localización en tables.{TableName}.views.{Id}.label, tiene precedencia sobre DisplayName. Esto es útil para vistas personalizadas donde quieres un nombre legible de inmediato sin añadir una entrada de localización.
Botones de la barra de herramientas
Soporta MainGrid los mismos botones de la barra de herramientas que SubGrid. Para cuadrículas independientes, NavigateNewRecordGridButton y NavigateOpenRecordGridButton se usan comúnmente para navegar a páginas de formulario separadas. Consulta la documentación de Grid Buttons para una referencia completa de todos los botones disponibles y sus opciones de configuración.
Cuando el usuario escribe en el cuadro de búsqueda de la cuadrícula, la vista configurada se vuelve a consultar automáticamente con condiciones de filtro adicionales aplicadas a cada columna elegible para búsqueda mostrada en la vista. Las condiciones se unen con OR lógica, por lo que se incluye un registro si alguna de sus columnas visibles coincide con el término de búsqueda. La semántica de coincidencia por defecto varía según el tipo de columna.
Columnas de texto y consulta
Las columnas de texto (campos de cadena) y las columnas de búsqueda (comparadas con el nombre principal del registro objetivo) usan por defecto un inicio de búsqueda . La tipificación joh coincide con valores que comienzan con joh — por ejemplo John o Johnson. La coincidencia se delega al operador de like FetchXML, que es insensible a mayúsculas y minúsculas en Dataverse.
Úsalo * como comodín para un emparejamiento más flexible. Al escribir *hn , se realiza una coincidencia al estilo contains-(por ejemplo, John), Johnsonla tipificación j*n coincide con valores donde pueden aparecer caracteres entre el j y ( n por ejemplo, John, Joneson). El comodín se convierte en comodín de % FetchXML en el momento de la consulta.
Columnas de elección
Las columnas de elección (conjuntos de opciones / listas de selección) y las columnas de selección múltiple se comparan con la etiqueta de visualización localizada de cada opción en lugar del valor entero subyacente. Las etiquetas se comparan de forma insensible a mayúsculas y minúsculas y acentual en la cultura del usuario actual, por lo que escribir cafe coincidirá con una opción etiquetada Café. Cuando una o más etiquetas de opción coinciden, la consulta emite una condición FetchXML contra los valores de opción coincidentes — una in condición para columnas de selección única, o contain-values una condición para columnas de selección múltiple. Cuando ninguna etiqueta coincide, la columna no aporta ninguna condición (manteniendo el OR filtro compacto).
Las columnas de elección respetan el mismo * comodín que las columnas de texto: por defecto la coincidencia comienza con (escribiendo act coincidencias Active), y una salida * cambia a contains (escribiendo *act coincidencias Inactiveadicionales ). Las filas coincidentes tienen la subcadena correspondiente resaltada en la cuadrícula, exactamente como las coincidencias de columnas de texto.
Columnas numéricas y de dinero
Las columnas numéricas — int, int grande, decimal, double y money — permiten operadores de comparación en el término de búsqueda. El cuadro de búsqueda analiza un operador inicial opcional y aplica el correspondiente operador de condición FetchXML:
= 100 o simplemente 100 — igual (el valor por defecto cuando no se especifica ningún operador)
> 100 — mayor que
< 100 — menos que
>= 100 — mayor o igual
<= 100 — menor o igual
Nota
Las condiciones de búsqueda para cada tipo de columna se añaden al mismo OR grupo de filtros, de modo que el mismo término de búsqueda se evalúa simultáneamente frente a columnas de texto, columnas de búsqueda, columnas de elección y columnas numéricas. Escribir 100 una cuadrícula que tenga tanto una columna de nombre como una columna de cantidad coincidirá con registros cuyo nombre empiece por100 o cuyo importe sea igual a 100. El filtro de búsqueda se superpone al filtro existente de la vista, por lo que las restricciones a nivel de vista (como un statecode = 0 filtro) siempre se conservan.
Desactivar la búsqueda
Configurado AllowSearch="false" en la cuadrícula para ocultar completamente el cuadro de búsqueda. Esto es útil para cuadrículas que contienen solo un pequeño conjunto fijo de registros, o donde el filtrado se gestiona externamente (por ejemplo, a través de una barra de herramientas personalizada).
La cuadrícula soporta dos estrategias de paginación mediante el PagingMode parámetro (Blazor) / pagingMode prop (React). Ambos modos utilizan la misma vista subyacente, FetchXML, ordenación y búsqueda — solo que la forma en que se muestran las filas al usuario difiere.
Paged (por defecto) — un clásico pie de página Anterior / Siguiente con un selector de tamaño de página. Es ideal para conjuntos de resultados más cortos y para casos en los que el usuario quiera saltar por número de página o compartir una página enlazada en profundidad en la URL.
Virtualize — pergamino infinito. El pie de página del buscapersonas queda oculto, las filas se acumulan a medida que el usuario pasa por la parte inferior renderizada, y la siguiente página se recupera automáticamente. Un contador de solo lectura "Mostrando 1-N de M" reemplaza al buscapersonas una vez que hay disponible el total. Es ideal para listas largas donde el usuario escanea en lugar de navegar por página.
Opta por participar configurando el modo de paginación en la cuadrícula:
La misma contact cuadrícula que la demo principal, pero con PagingMode="GridPagingMode.Virtualize" (Blazor) / pagingMode={PagingMode.Virtualize} (React) y un tamaño de fragmento más pequeño, así que desplazarse ejercita el acumulador. El pie de página del buscapersonas ha desaparecido — desplázate hacia abajo para sacar más páginas y observa cómo se actualiza el contador en la parte superior de la cuadrícula a medida que llegan más filas.
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.
Mis contactosTodos los contactos
Mis contactosTodos los contactos
Tamaño de página
102050100
Nombre completo
Teléfono móvil
Correo electrónico
Nombre de la empresa
Edad
React TypeScript
Razor
Compensaciones
No hay salto a la página. El modo virtualización siempre comienza en la primera página y avanza; los consumidores ya no pueden saltar a la página N. Si necesitas una navegación explícita por la página, mantente en Paged.
No se mantiene la página. Como la posición de desplazamiento del usuario no es un concepto de página discreto, PersistedStateQueryParameter se omite la p clave en modo virtualización. Vista seleccionada, ordenación y búsqueda (opt-in) siguen recorriendo la URL.
Buscar y ordenar siguen funcionando, pero reinician el acumulador desplazado — cambiar la vista activa, aplicar un nuevo ordenamiento o escribir en el cuadro de búsqueda elimina las filas cargadas y vuelve a buscar desde arriba.
Oculta el buscapersonas / selector de tamaño de página. El selector de tamaño de página se sustituye por un tamaño de bloque fijo; establecer el valor inicial mediante DefaultItemsPerPage (Blazor) / pageSize (React) para controlar cuántas filas se obtienen por cada página activada por desplazamiento.
Modo de tamaño completo
Configurado FullSize="true" para que la cuadrícula se expanda y llene toda la altura de su contenedor principal. Esto es útil cuando la cuadrícula es el contenido principal de una página.
Se establece PersistedStateQueryParameter en un nombre de parámetro de consulta (por ejemplo, "gridState") y la cuadrícula reflejará su estado interactivo en un único parámetro de URL bajo ese nombre. Cada cambio impulsado por el usuario — cambiar la vista seleccionada, paginar, redimensionar el tamaño de la página, hacer clic en cabeceras de columna para ordenar o (optar por suscripción) escribir en el cuadro de búsqueda — vuelve a codificar el estado y reemplaza el parámetro URL en su lugar. Cuando la página se abre con el parámetro presente (marcador, enlace compartido, actualización), la cuadrícula lee el parámetro en la primera carga y restaura todo el estado capturado antes de obtener los datos.
El parámetro de consulta codifica un objeto JSON compacto con una tecla corta por cada pieza de estado. Las claves se abrevian deliberadamente para mantener las URLs marcadas cortas. Se omiten los campos que coinciden con sus valores naturales por defecto, por lo que una cuadrícula en la página 1 sin orden ni búsqueda produce un blob mucho más pequeño que uno con los cinco campos poblados.
v — el GUID de la vista seleccionada (minúscula, guionado, sin brackets). Coincide con una de las ViewIds entradas / CustomViewDefinitions con las que se configuró la cuadrícula.
p — el número de página basado en 1. Se omite cuando el usuario está en la página 1 (por defecto).
ps — el número de filas por página. Refleja la última selección del usuario en el desplegable de tamaño de página; se omite cuando coincide con la de la DefaultItemsPerPagecuadrícula.
s — una orden ordenada de directivas de ordenación. Cada entrada tiene c (nombre lógico de columna) y una opción d (establecida como true para descendente; ascendente es el valor por defecto no marcado, por lo que d se omite en ese caso). El estado vacío / sin ordenar omite el campo por completo. La ordenación multicolumna se conserva en orden de precedencia.
q — el texto actual de la caja de búsqueda. Solo se incluye cuando la cuadrícula está configurada con IncludeSearchInPersistedState="true" Y la caja tiene un valor no vacío. Desactivado por defecto, ya que los términos de búsqueda pueden ser sensibles (por ejemplo, nombres de clientes en un contexto CRM).
Codificación de URL
El estado se serializa como JSON compacto (sin espacio en blanco) y se codifica URL en el parámetro de consulta. Una cuadrícula que mostraba la página 3 de una vista de contacto, ordenada por apellido, ascendiendo y creada al descender, con la búsqueda "smith" activada, enviaba la siguiente carga útil:
Después de la codificación de URLs, el valor real de la barra de direcciones se ve así (el framework llama encodeURIComponent a la cadena JSON antes de escribirla):
El codificador elimina cualquier campo que coincida con su predeterminado natural antes de serializar. La página 1 cae p, una lista de ordenación vacía cae s, una ordenación ascendente sin marcar cae d, y una búsqueda vacía deja q. Una cuadrícula recién cargada sin interacción del usuario codifica en un blob que contiene solo v y ps — impidiendo que las URLs marcadas crezcan para un estado que el consumidor no ha tocado.
Comportamiento del historial de navegador
Los cambios de estado actualizan la URL con history.replaceState — no envían nuevas entradas a la pila trasera. Esto significa que pulsar Atrás desde una página de cuadrícula vuelve a la página distinta anterior (el origen de navegación del usuario), no a la combinación de ordenación/página anterior. El compromiso es intencionado: una sola sesión de cuadrícula puede producir decenas de cambios de estado, y pulsar cada uno como entrada de navegación haría que el botón Atrás fuera prácticamente inútil en el resto de la aplicación.
Activando la persistencia de búsqueda
Por defecto, el texto de búsqueda se excluye de la URL, por lo que el parámetro es seguro para compartir incluso cuando la cuadrícula filtra por un término sensible. Configura IncludeSearchInPersistedState="true" para incluir el valor actual del cuadro de búsqueda en la carga útil codificada (añadido como el q campo anterior). Una vez habilitada, la búsqueda pasa a formar parte del estado de marcador — el usuario puede copiar la URL y el destinatario aparece en la misma combinación de vista, página, ordenación Y filtro.
La forma JSON codificada es idéntica entre las implementaciones de Blazor y React Grid: mismo nombre de parámetro, mismas claves (v / p / ps / s / ), qmisma semántica de valores. Un enlace producido por una pila es consumible por la otra, por lo que una organización que ejecuta ambas superficies (por ejemplo, un portal público de React junto con una aplicación interna de administración de Blazor) puede compartir URLs de cuadrícula entre ellas sin ninguna capa de traducción por pila.
Múltiples cuadrículas en una sola página
Dos cuadrículas en la misma página deben usar nombres diferentesPersistedStateQueryParameter. Cada cuadrícula solo lee y escribe su propio parámetro, por lo que reutilizar el mismo nombre haría que ambas cuadrículas compitieran por la misma ranura de URL: gana la última escritura y la otra cuadrícula pierde su estado en cada cambio. Una convención típica es nombrar el parámetro según el rol de la cuadrícula (por ejemplo, contactsState + accountsState).
Rejillas Multi-Tabla
A MainGrid puede mostrar vistas de diferentes tablas incluyendo identificadores de vista de varias tablas de la ViewIds colección. Cuando el usuario cambia de vista, la cuadrícula carga automáticamente los datos de la tabla correcta. Utiliza el OnClick callback en los botones de navegación para establecer dinámicamente la URL según el nombre de la tabla de la vista seleccionada.
React
<MainGrid
viewIds={viewIds}
customViewDefinitions={customViews}
defaultViewId={ALL_CONTACTS_VIEW_ID}
>
<GridButtons>
<NavigateNewRecordGridButton
url="/contacts/new"
onClick={(ctx) => {
switch (ctx.gridContext.selectedView?.tableName) {
case 'contact': ctx.url = '/contacts/new'; break;
case 'account': ctx.url = '/accounts/new'; break;
default: throw new Error('Tabla desconocida');
}
}}
/>
<NavigateOpenRecordGridButton
urlFor={(record, ctx) => {
switch (ctx.selectedView?.tableName) {
case 'contact': return `/contacts/edit?id=${record.id}`;
case 'account': return `/accounts/edit?id=${record.id}`;
default: throw new Error('Tabla desconocida');
}
}}
/>
</GridButtons>
</MainGrid>Blazor
Cuando es cierto, el usuario puede cambiar el número de elementos mostrados por página.
AllowDownloadForFileColumns
bool
True
Cuando es cierto (por defecto), la cuadrícula muestra un icono de descarga por fila en el borde trasero de las celdas de columna de archivo e imagen. Al hacer clic en él, el archivo se transmite a la navegador del usuario. Configura en falso para suprimir el icono — por ejemplo, en modo solo lectura Cuadrículas de auditoría donde no se permite exportar archivos.
AllowEdit
bool
False
¿Debería estar disponible la opción para que el usuario active la edición en línea para la cuadrícula?
AllowNavigateOnPrimaryNameClick
bool
True
Cuando es cierto (por defecto) y la cuadrícula tiene un botón de 'editar' registrado (un GridButton con IsOpenRecordButton=true), la celda que renderiza la columna de nombre principal de la tabla se convierte en un hipervínculo. Al hacer clic se despacha lo mismo invocación por fila que un doble clic en fila haría — para que el usuario pueda saltar a la edición form (o la URL de edición navegada, dependiendo del botón registrado) sin antes Seleccionar la fila. Configura en false para suprimir el hipervínculo y renderizar el celda de nombre principal como texto plano. No tiene efecto cuando no hay ningún botón de edición registrado.
AllowNavigateOnRowDoubleClick
bool
True
Cuando es cierto (por defecto) y la cuadrícula tiene un botón de 'editar' registrado (un GridButton con IsOpenRecordButton=true), haciendo doble clic en una fila invoca el OnClick de ese botón para el registro de la fila — apertura el diálogo de edición o navegar hasta la URL de edición, según lo que haga el botón. A ajustar false para suprimir el controlador de doble clic. No tiene efecto cuando no hay botón de edición está registrado.
AllowPreviewForFileColumns
bool
True
Cuando es cierto (por defecto), la cuadrícula muestra un icono de vista previa 'eye' por fila en el borde trasero de celdas de columna de archivo e imagen cuyo contenido puede renderizarse en línea (imágenes, PDFs, texto plano). Configura en falso para suprimir el icono — por ejemplo, en cuadrículas donde las columnas no deberían servir de punto de entrada para previsualizar.
AllowSearch
bool
True
¿Debería permitirse al usuario buscar en la cuadrícula?
BorderVisible
bool
True
Controla si se representa un borde visible alrededor de la cuadrícula.
Buttons
RenderFragment?
Fragmento de renderizado opcional usado para definir la barra de botones mostrada sobre la cuadrícula.
Columns
RenderFragment?
Fragmento opcional Components.GridColumns que transporta declarado por el consumidor Components.GridColumn niños. Cuando se suministra, la red cambia a Modo de reemplazo: solo se renderizan las columnas declaradas (en declarado orden), la proyección FetchXML se reescribe para coincidir, y el La lista de columnas de Underlying View es ignorada. null deja la cuadrícula en su comportamiento predeterminado (auto-generar columnas desde el conjunto de columnas resueltas de la vista).
CustomViewDefinitions
List<GridViewDefinition>?
Vistas personalizadas para mostrar en el desplegable.
DataSource
ViewDataSource?
Opcional compartido Data.ViewDataSource. Cuando se ajusta, la cuadrícula lee sus filas + conteo total de la fuente de datos en lugar de emitiendo su propio RetrieveRecordsAsync(System.String) llamada — La misma fuente de datos puede impulsar a un hermano <DataverseChart> o una segunda cuadrícula para que todos ellos Paginar / filtrar / buscar juntos en un solo viaje de ida y vuelta. El uso independiente (no GridBase.DataSource) mantiene el máquina de estados internos existente — la cuadrícula compone FetchXML y obtiene directamente a través de IPowerPortalsProService . Lo que la fuente de datos NO posee: interfaz por cuadrícula estado (filas seleccionadas, filas pendientes creadas / actualizaciones / eliminadas, anchos de columna). Esos se mantienen en cuadrícula local: dos cuadrículas compartiendo una La fuente de datos puede seguir teniendo selección independiente y por cuadrícula Correcciones pendientes. Cuando ViewDataSource.Highlight se establece (por ejemplo, mediante un click en segmento gráfico en modo de filtro cruzado 'resaltado'), filas cuyo El valor en la columna resaltada no coincide visualmente silenciado mediante una clase CSS; los datos de fila + selección son no afectado (el filtro cruzado suave es puramente de estilo).
DefaultItemsPerPage
int
50
Número predeterminado de registros que se cargan en una página.
DefaultViewId
Guid?
ID de la vista que la cuadrícula debería mostrar al cargar inicialmente.
Editable
bool
False
¿Está activada la edición en línea para la cuadrícula?
Filters
IReadOnlyList<GridFilterBase>?
Filtros adicionales del lado del servidor AND se fusionaron en las vistas resueltas FetchXML antes de paginar, ordenar o buscar se activa. Reenviado a Query.IFetchXmlQueryComposer's FetchXmlQueryOptions.Filters, Así, cada entrada se despacha por tipo de tiempo de ejecución (por ejemplo, Models.RelationshipFilter AND-fusiona una relación entidad-enlace). Uso típico: el selector LinkExistingRecordGridGrid pasa un Models.RelationshipFilter con RelationshipFilterMode.ExcludeExistingRecords Así que ya- los registros enlazados están ocultos al diálogo de consulta M2M. Se combina aditivamente con el propio sistema interno de SubGrid filtro de relaciones (que está integrado directamente en FetchXML en lugar de pasar por la ranura de Filtros del compositor) — ambos extremos En la misma consulta.
FullSize
bool
False
Cuando es cierto, la cuadrícula se expande para llenar todo el espacio vertical disponible en lugar de usar una altura mínima fija.
HidePaging
bool
False
Forzar que el tamaño de página y los componentes de paginación estén ocultos. Solo hazlo cuando se conoce el número de elementos y el tamaño de la página está configurado a algo mayor que el número de elementos.
IncludeSearchInPersistedState
bool
False
Cuando es cierto, el texto de búsqueda activa se incluye en el persistente parámetro de URL de estado (debajo del campo q ). Por defecto es falso — los términos de búsqueda pueden ser sensibles, acumularse en el historial del navegador, y filtrarse a los referentes HTTP, así que la cuadrícula los mantiene fuera de la URL a menos que El consumidor opta explícitamente por participar. No tiene efecto cuando GridBase.PersistedStateQueryParameter no está fija.
IsDirty
bool
False
Indica si la cuadrícula tiene pendientes las operaciones de creación, actualización o eliminación desguardadas.
LoadedRecords
IEnumerable<TableRecord>
Registros actualmente renderizados en la cuadrícula (la página más reciente de resultados). Pensado para comandos de barra de herramientas que deben actuar sobre 'todo lo mostrado' — por ejemplo, un bloque botón de descarga. No abarca páginas; Las operaciones de bloqueo de páginas deben ejecutar su En su lugar, busca tu propio recado sin página.
MaxHeight
string?
Altura máxima a la que debería expandirse el control de la cuadrícula.
MinHeight
string?
300px
Altura mínima que debe ocupar el control de la cuadrícula.
Mode
GridMode
RecordSelection
Establece el modo de comportamiento de la cuadrícula, como la interacción predeterminada o el modo de selección de registros.
PageSizes
IEnumerable<int>
Colección de tamaños de página disponibles para la cuadrícula.
PagingMode
GridPagingMode
Paged
Determina si la cuadrícula utiliza paginación tradicional o virtualización de desplazamiento infinito.
PersistedRowsSnapshot
PersistedGridRowsSnapshot?
El prerenderizado del servidor → transferencia interactiva para la página renderizada de filas. El marco Persiste automáticamente esta propiedad al final del prerenderizado y la rehidrata antes GridBase.OnInitializedAsync en el lado interactivo, así que la obtención de datos puede ser Me salté el primer render interactivo. Clave por la posición del árbol de renderizado por el framework; El PersistedGridRowsSnapshot.ViewId campo se comprueba en el consumo tiempo, así que un rerender contra otra vista descarta las filas obsoletas. Público según el el requisito del marco — [PersistentState] solo ve propiedades públicas a través de reflexión — pero no está destinada a ser puesta externamente.
PersistedStateQueryParameter
string?
Nombre del parámetro de la cadena de consulta URL para mantener la interacción de la cuadrícula Estala a. Cuando se establece, la cuadrícula interpreta este parámetro en la carga inicial y siembra la vista activa, número de página, tamaño de página y ordena a partir de ella; acciones posteriores del usuario (selección de vista, cambio de página, ordenación de encabezado, etc.) Escribe el nuevo estado de vuelta a través Components.NavigationManagerde 's Camino de reemplazo de estado. La persistencia sobrevive a la actualización de página y a los marcadores.
SelectedRecords
IEnumerable<TableRecord>
Registros que actualmente se seleccionan en la cuadrícula.
SelectFromEntireRow
bool
True
Cuando es cierto, al hacer clic en cualquier parte de una fila se selecciona; cuando es falso, solo la casilla selecciona la fila.
SelectMode
DataGridSelectMode
Multiple
Controla si la cuadrícula permite la selección de una sola fila o de varias filas.
TableName
string?
El nombre lógico de la tabla cuyas vistas públicas deberían estar cargadas. Aplicable solo cuando no se especifican valores para GridBase.DefaultViewId o GridBase.ViewIds.
Title
string?
Nombre para mostrar cuando no se muestra el desplegable de vista.
Callback opcional que se ejecuta inmediatamente después de cargar una vista y antes de que la cuadrícula se use es para construir columnas o consultas. Devolver un modificado Models.GridViewDefinition a transforma lo que la cuadrícula finalmente renderiza — por ejemplo, para asegurar una columna específica siempre está presente independientemente de la configuración propia de la vista. Asíncrono para que los llamantes puedan consulta cachés de metadatos, servicios u otros recursos asíncronos mientras decides qué hacer incluir.
ViewIds
IEnumerable<Guid>?
Lista de identificaciones de las vistas a las que la cuadrícula debería limitarse en el desplegable de vistas.
ViewSort
ViewSort
NameAscending
Ordena las vistas en el desplegable de vistas.
Nombre:AllowChangingPageSize
Tipo:bool
Default:True
Descripción:Cuando es cierto, el usuario puede cambiar el número de elementos mostrados por página.
Nombre:AllowDownloadForFileColumns
Tipo:bool
Default:True
Descripción:Cuando es cierto (por defecto), la cuadrícula muestra un icono de descarga por fila en el borde trasero de las celdas de columna de archivo e imagen. Al hacer clic en él, el archivo se transmite a la navegador del usuario. Configura en falso para suprimir el icono — por ejemplo, en modo solo lectura Cuadrículas de auditoría donde no se permite exportar archivos.
Nombre:AllowEdit
Tipo:bool
Default:False
Descripción:¿Debería estar disponible la opción para que el usuario active la edición en línea para la cuadrícula?
Nombre:AllowNavigateOnPrimaryNameClick
Tipo:bool
Default:True
Descripción:Cuando es cierto (por defecto) y la cuadrícula tiene un botón de 'editar' registrado (un GridButton con IsOpenRecordButton=true), la celda que renderiza la columna de nombre principal de la tabla se convierte en un hipervínculo. Al hacer clic se despacha lo mismo invocación por fila que un doble clic en fila haría — para que el usuario pueda saltar a la edición form (o la URL de edición navegada, dependiendo del botón registrado) sin antes Seleccionar la fila. Configura en false para suprimir el hipervínculo y renderizar el celda de nombre principal como texto plano. No tiene efecto cuando no hay ningún botón de edición registrado.
Nombre:AllowNavigateOnRowDoubleClick
Tipo:bool
Default:True
Descripción:Cuando es cierto (por defecto) y la cuadrícula tiene un botón de 'editar' registrado (un GridButton con IsOpenRecordButton=true), haciendo doble clic en una fila invoca el OnClick de ese botón para el registro de la fila — apertura el diálogo de edición o navegar hasta la URL de edición, según lo que haga el botón. A ajustar false para suprimir el controlador de doble clic. No tiene efecto cuando no hay botón de edición está registrado.
Nombre:AllowPreviewForFileColumns
Tipo:bool
Default:True
Descripción:Cuando es cierto (por defecto), la cuadrícula muestra un icono de vista previa 'eye' por fila en el borde trasero de celdas de columna de archivo e imagen cuyo contenido puede renderizarse en línea (imágenes, PDFs, texto plano). Configura en falso para suprimir el icono — por ejemplo, en cuadrículas donde las columnas no deberían servir de punto de entrada para previsualizar.
Nombre:AllowSearch
Tipo:bool
Default:True
Descripción:¿Debería permitirse al usuario buscar en la cuadrícula?
Nombre:BorderVisible
Tipo:bool
Default:True
Descripción:Controla si se representa un borde visible alrededor de la cuadrícula.
Nombre:Buttons
Tipo:RenderFragment?
Descripción:Fragmento de renderizado opcional usado para definir la barra de botones mostrada sobre la cuadrícula.
Nombre:Columns
Tipo:RenderFragment?
Descripción:Fragmento opcional Components.GridColumns que transporta declarado por el consumidor Components.GridColumn niños. Cuando se suministra, la red cambia a Modo de reemplazo: solo se renderizan las columnas declaradas (en declarado orden), la proyección FetchXML se reescribe para coincidir, y el La lista de columnas de Underlying View es ignorada. null deja la cuadrícula en su comportamiento predeterminado (auto-generar columnas desde el conjunto de columnas resueltas de la vista).
Nombre:CustomViewDefinitions
Tipo:List<GridViewDefinition>?
Descripción:Vistas personalizadas para mostrar en el desplegable.
Nombre:DataSource
Tipo:ViewDataSource?
Descripción:Opcional compartido Data.ViewDataSource. Cuando se ajusta, la cuadrícula lee sus filas + conteo total de la fuente de datos en lugar de emitiendo su propio RetrieveRecordsAsync(System.String) llamada — La misma fuente de datos puede impulsar a un hermano <DataverseChart> o una segunda cuadrícula para que todos ellos Paginar / filtrar / buscar juntos en un solo viaje de ida y vuelta. El uso independiente (no GridBase.DataSource) mantiene el máquina de estados internos existente — la cuadrícula compone FetchXML y obtiene directamente a través de IPowerPortalsProService . Lo que la fuente de datos NO posee: interfaz por cuadrícula estado (filas seleccionadas, filas pendientes creadas / actualizaciones / eliminadas, anchos de columna). Esos se mantienen en cuadrícula local: dos cuadrículas compartiendo una La fuente de datos puede seguir teniendo selección independiente y por cuadrícula Correcciones pendientes. Cuando ViewDataSource.Highlight se establece (por ejemplo, mediante un click en segmento gráfico en modo de filtro cruzado 'resaltado'), filas cuyo El valor en la columna resaltada no coincide visualmente silenciado mediante una clase CSS; los datos de fila + selección son no afectado (el filtro cruzado suave es puramente de estilo).
Nombre:DefaultItemsPerPage
Tipo:int
Default:50
Descripción:Número predeterminado de registros que se cargan en una página.
Nombre:DefaultViewId
Tipo:Guid?
Descripción:ID de la vista que la cuadrícula debería mostrar al cargar inicialmente.
Nombre:Editable
Tipo:bool
Default:False
Descripción:¿Está activada la edición en línea para la cuadrícula?
Nombre:Filters
Tipo:IReadOnlyList<GridFilterBase>?
Descripción:Filtros adicionales del lado del servidor AND se fusionaron en las vistas resueltas FetchXML antes de paginar, ordenar o buscar se activa. Reenviado a Query.IFetchXmlQueryComposer's FetchXmlQueryOptions.Filters, Así, cada entrada se despacha por tipo de tiempo de ejecución (por ejemplo, Models.RelationshipFilter AND-fusiona una relación entidad-enlace). Uso típico: el selector LinkExistingRecordGridGrid pasa un Models.RelationshipFilter con RelationshipFilterMode.ExcludeExistingRecords Así que ya- los registros enlazados están ocultos al diálogo de consulta M2M. Se combina aditivamente con el propio sistema interno de SubGrid filtro de relaciones (que está integrado directamente en FetchXML en lugar de pasar por la ranura de Filtros del compositor) — ambos extremos En la misma consulta.
Nombre:FullSize
Tipo:bool
Default:False
Descripción:Cuando es cierto, la cuadrícula se expande para llenar todo el espacio vertical disponible en lugar de usar una altura mínima fija.
Nombre:HidePaging
Tipo:bool
Default:False
Descripción:Forzar que el tamaño de página y los componentes de paginación estén ocultos. Solo hazlo cuando se conoce el número de elementos y el tamaño de la página está configurado a algo mayor que el número de elementos.
Nombre:IncludeSearchInPersistedState
Tipo:bool
Default:False
Descripción:Cuando es cierto, el texto de búsqueda activa se incluye en el persistente parámetro de URL de estado (debajo del campo q ). Por defecto es falso — los términos de búsqueda pueden ser sensibles, acumularse en el historial del navegador, y filtrarse a los referentes HTTP, así que la cuadrícula los mantiene fuera de la URL a menos que El consumidor opta explícitamente por participar. No tiene efecto cuando GridBase.PersistedStateQueryParameter no está fija.
Nombre:IsDirty
Tipo:bool
Default:False
Descripción:Indica si la cuadrícula tiene pendientes las operaciones de creación, actualización o eliminación desguardadas.
Nombre:LoadedRecords
Tipo:IEnumerable<TableRecord>
Descripción:Registros actualmente renderizados en la cuadrícula (la página más reciente de resultados). Pensado para comandos de barra de herramientas que deben actuar sobre 'todo lo mostrado' — por ejemplo, un bloque botón de descarga. No abarca páginas; Las operaciones de bloqueo de páginas deben ejecutar su En su lugar, busca tu propio recado sin página.
Nombre:MaxHeight
Tipo:string?
Descripción:Altura máxima a la que debería expandirse el control de la cuadrícula.
Nombre:MinHeight
Tipo:string?
Default:300px
Descripción:Altura mínima que debe ocupar el control de la cuadrícula.
Nombre:Mode
Tipo:GridMode
Default:RecordSelection
Descripción:Establece el modo de comportamiento de la cuadrícula, como la interacción predeterminada o el modo de selección de registros.
Nombre:PageSizes
Tipo:IEnumerable<int>
Descripción:Colección de tamaños de página disponibles para la cuadrícula.
Nombre:PagingMode
Tipo:GridPagingMode
Default:Paged
Descripción:Determina si la cuadrícula utiliza paginación tradicional o virtualización de desplazamiento infinito.
Nombre:PersistedRowsSnapshot
Tipo:PersistedGridRowsSnapshot?
Descripción:El prerenderizado del servidor → transferencia interactiva para la página renderizada de filas. El marco Persiste automáticamente esta propiedad al final del prerenderizado y la rehidrata antes GridBase.OnInitializedAsync en el lado interactivo, así que la obtención de datos puede ser Me salté el primer render interactivo. Clave por la posición del árbol de renderizado por el framework; El PersistedGridRowsSnapshot.ViewId campo se comprueba en el consumo tiempo, así que un rerender contra otra vista descarta las filas obsoletas. Público según el el requisito del marco — [PersistentState] solo ve propiedades públicas a través de reflexión — pero no está destinada a ser puesta externamente.
Nombre:PersistedStateQueryParameter
Tipo:string?
Descripción:Nombre del parámetro de la cadena de consulta URL para mantener la interacción de la cuadrícula Estala a. Cuando se establece, la cuadrícula interpreta este parámetro en la carga inicial y siembra la vista activa, número de página, tamaño de página y ordena a partir de ella; acciones posteriores del usuario (selección de vista, cambio de página, ordenación de encabezado, etc.) Escribe el nuevo estado de vuelta a través Components.NavigationManagerde 's Camino de reemplazo de estado. La persistencia sobrevive a la actualización de página y a los marcadores.
Nombre:SelectedRecords
Tipo:IEnumerable<TableRecord>
Descripción:Registros que actualmente se seleccionan en la cuadrícula.
Nombre:SelectFromEntireRow
Tipo:bool
Default:True
Descripción:Cuando es cierto, al hacer clic en cualquier parte de una fila se selecciona; cuando es falso, solo la casilla selecciona la fila.
Nombre:SelectMode
Tipo:DataGridSelectMode
Default:Multiple
Descripción:Controla si la cuadrícula permite la selección de una sola fila o de varias filas.
Nombre:TableName
Tipo:string?
Descripción:El nombre lógico de la tabla cuyas vistas públicas deberían estar cargadas. Aplicable solo cuando no se especifican valores para GridBase.DefaultViewId o GridBase.ViewIds.
Nombre:Title
Tipo:string?
Descripción:Nombre para mostrar cuando no se muestra el desplegable de vista.
Descripción:Callback opcional que se ejecuta inmediatamente después de cargar una vista y antes de que la cuadrícula se use es para construir columnas o consultas. Devolver un modificado Models.GridViewDefinition a transforma lo que la cuadrícula finalmente renderiza — por ejemplo, para asegurar una columna específica siempre está presente independientemente de la configuración propia de la vista. Asíncrono para que los llamantes puedan consulta cachés de metadatos, servicios u otros recursos asíncronos mientras decides qué hacer incluir.
Nombre:ViewIds
Tipo:IEnumerable<Guid>?
Descripción:Lista de identificaciones de las vistas a las que la cuadrícula debería limitarse en el desplegable de vistas.
Nombre:ViewSort
Tipo:ViewSort
Default:NameAscending
Descripción:Ordena las vistas en el desplegable de vistas.
Eventos
Nombre
Tipo
Descripción
EditableChanged
EventCallback<bool>
Se invoca la llamada de regreso cuando cambia el estado de la edición en línea.
SelectedRecordsChanged
EventCallback<IEnumerable<TableRecord>>
Se invoca la llamada de regreso cuando cambia la colección de registros seleccionada.
Nombre:EditableChanged
Tipo:EventCallback<bool>
Descripción:Se invoca la llamada de regreso cuando cambia el estado de la edición en línea.
Nombre:SelectedRecordsChanged
Tipo:EventCallback<IEnumerable<TableRecord>>
Descripción:Se invoca la llamada de regreso cuando cambia la colección de registros seleccionada.
Métodos
Nombre
Parámetros
Tipo
Descripción
ClearSelectionAsync
Task
Limpia todas las filas seleccionadas actualmente.
OpenFileDownloadAsync
TableRecord record string columnName
Task
Recupera los bytes de la columna de archivo/imagen y record los transmite en streaming al navegador del usuario como descarga. Invocado por el icono de descarga por fila en el archivo y células de imagen.
OpenFilePreviewAsync
TableRecord record string columnName
Task
Abre el cuadro de vista previa en línea para la columna columnName de archivo/imagen en record. Invocado por el icono de vista previa por fila en las celdas de archivo/imagen y también disponible para componer componentes (por ejemplo, un botón de barra de herramientas en un envoltorio Grid) que quieren un punto de entrada programático.
RefreshAsync
bool forceRefresh
Task
Indica a la cuadrícula que vuelva a buscar y renderice los datos actuales de la fuente de datos suministrada.
Validate
bool
Valida todas las filas editables en la cuadrícula.
Nombre:ClearSelectionAsync
Tipo:Task
Descripción:Limpia todas las filas seleccionadas actualmente.
Nombre:OpenFileDownloadAsync
Parámetros:TableRecord record string columnName
Tipo:Task
Descripción:Recupera los bytes de la columna de archivo/imagen y record los transmite en streaming al navegador del usuario como descarga. Invocado por el icono de descarga por fila en el archivo y células de imagen.
Nombre:OpenFilePreviewAsync
Parámetros:TableRecord record string columnName
Tipo:Task
Descripción:Abre el cuadro de vista previa en línea para la columna columnName de archivo/imagen en record. Invocado por el icono de vista previa por fila en las celdas de archivo/imagen y también disponible para componer componentes (por ejemplo, un botón de barra de herramientas en un envoltorio Grid) que quieren un punto de entrada programático.
Nombre:RefreshAsync
Parámetros:bool forceRefresh
Tipo:Task
Descripción:Indica a la cuadrícula que vuelva a buscar y renderice los datos actuales de la fuente de datos suministrada.
Nombre:Validate
Tipo:bool
Descripción:Valida todas las filas editables en la cuadrícula.
GridViewDefinition Clase
Propiedades
Nombre
Tipo
Default
Descripción
Columns
List<ViewColumn>
Las columnas se mostraban en la cuadrícula, incluyendo sus nombres lógicos y anchos de píxeles.
DisplayName
string?
Nombre de visualización opcional para esta vista. Cuando se configura, se utiliza como etiqueta predeterminada en el Ver el selector desplegable. Una entrada de localización en mesas. {NombreDeTabla}.vistas. {Id}.etiqueta tiene prioridad si existe.
FetchXml
string
La consulta FetchXML que define qué registros y columnas se recuperan para esta vista.
TableName
string
El nombre lógico de la tabla Dataverse es esta consulta.
Nombre:Columns
Tipo:List<ViewColumn>
Descripción:Las columnas se mostraban en la cuadrícula, incluyendo sus nombres lógicos y anchos de píxeles.
Nombre:DisplayName
Tipo:string?
Descripción:Nombre de visualización opcional para esta vista. Cuando se configura, se utiliza como etiqueta predeterminada en el Ver el selector desplegable. Una entrada de localización en mesas. {NombreDeTabla}.vistas. {Id}.etiqueta tiene prioridad si existe.
Nombre:FetchXml
Tipo:string
Descripción:La consulta FetchXML que define qué registros y columnas se recuperan para esta vista.
Nombre:TableName
Tipo:string
Descripción:El nombre lógico de la tabla Dataverse es esta consulta.
Default RecordSelection
Paged Virtualize
Single SingleSticky Multiple
Default NameAscending NameDescending
Apply comienza con un filtro en las siguientes columnas:
Correo electrónico Nombre completo Nombre de la empresa Teléfono móvil
Apply comienza con un filtro en las siguientes columnas:
Correo electrónico Nombre completo Nombre de la empresa Teléfono móvil
Apply comienza con un filtro en las siguientes columnas:
Correo electrónico Nombre completo Nombre de la empresa Teléfono móvil
Utiliza comparaciones numéricas en las siguientes columnas:
Edad
Apply comienza con un filtro en las siguientes columnas:
Correo electrónico Nombre completo Nombre de la empresa Teléfono móvil
Utiliza comparaciones numéricas en las siguientes columnas: