O MainGrid componente é uma grade independente para exibir registros do Dataverse. Diferente de , ele não requer um pai RecordContext — ele carrega SubGridregistros diretamente de uma tabela ou vista especificada.
Demo ao vivo
Um over-table standalone MainGridcontact conectado por cabo a duas visualizações personalizadas — Contatos Ativos e Meus Contatos. Use o menu suspenso do view-picker para alternar entre eles, digite na caixa de busca para filtrar, clique em um cabeçalho de coluna para ordenar e use o rodapé para folhear os resultados. Não é necessário um pai RecordContext — a grade carrega seus registros diretamente a partir das visualizações fornecidas.
Exemplo de reação
Exemplo de Blazor
Qualquer pessoa pode ver os contatos na grade abaixo. Faça login para criar, visualizar e atualizar seus próprios contatos.
Meus ContatosTodos os Contatos
Meus ContatosTodos os Contatos
Tamanho da página
102050100
Nome completo
Telefone Celular
E-mail
Nome da empresa
Idade
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
Carregando por nome da tabela
Defina o TableName parâmetro para carregar automaticamente todas as visualizações públicas dessa tabela. A primeira visualização padrão é selecionada inicialmente.
React
<MainGrid tableName="contact" />Blazor
<MainGrid TableName="contact" />
Carregamento por IDs de Visualização
Use ViewIds e DefaultViewId controle exatamente quais visualizações estão disponíveis e qual é selecionada ao carregar. Você também pode fornecer CustomViewDefinitions FetchXML inline para definir views diretamente no código.
<MainGrid ViewIds="_viewIds"
DefaultViewId="@(new Guid("..."))">
</MainGrid>
@code {
private List<Guid> _viewIds = new List<Guid>
{
new Guid("..."),
new Guid("..."),
};
}
Visualizações Personalizadas com FetchXML
Use CustomViewDefinitions para definir views com consultas personalizadas em FetchXML. Isso é útil para visualizações que incluem filtros baseados no usuário atual, entidades vinculadas ou outros critérios dinâmicos.
Nota
O Id para um costume GridViewDefinition deve ser um GUID aleatório único que não corresponde a uma visualização existente do Dataverse. Se corresponder a um ID de vista existente, a visualização do Dataverse terá prioridade e a definição personalizada será ignorada.
private List<GridViewDefinition> _customViews = new List<GridViewDefinition>
{
new GridViewDefinition
{
Id = new Guid("..."),
TableName = "contact",
DisplayName = "Todos os Contatos",
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
Defina DisplayName em a GridViewDefinition para fornecer um rótulo padrão para a visualização no seletor suspenso sem exigir uma entrada de arquivo de localização. Se existe uma chave de localização em tables.{TableName}.views.{Id}.label, ela tem precedência sobre DisplayName. Isso é útil para visualizações personalizadas onde você quer um nome legível imediatamente, sem adicionar uma entrada de localização.
Botões da Barra de Ferramentas
Ele MainGrid suporta os mesmos botões da barra de ferramentas que SubGrido . Para grades independentes, NavigateNewRecordGridButton e NavigateOpenRecordGridButton são comumente usados para navegar até páginas de formulário separadas. Consulte a documentação dos Botões da Grade para uma referência completa de todos os botões disponíveis e suas opções de configuração.
Quando o usuário digita na caixa de busca da grade, a visualização configurada é automaticamente reconsultada com condições adicionais de filtro aplicadas a cada coluna elegível para busca mostrada na visualização. As condições são unidas à OR lógica, de modo que um registro é incluído se alguma de suas colunas visíveis corresponder ao termo de busca. A semântica padrão de correspondência varia dependendo do tipo de coluna.
Colunas de Texto e Pesquisa
Colunas de texto (campos de string) e colunas de consulta (comparadas com o nome principal do registro alvo) usam por padrão um início com busca. A digitação joh corresponde a valores que começam com joh — por exemplo John , ou Johnson. A correspondência é delegada ao operador do like FetchXML, que é insensível a maiúsculas minúsculas no Dataverse.
Use * como coringa para um emparelhamento mais flexível. Digitar *hn executa uma correspondência no estilo contains (por exemplo, John), Johnsondigitação j*n corresponde a valores onde quaisquer caracteres podem aparecer entre o j e o n (por exemplo, John). Joneson O coringa é convertido para o coringa do % FetchXML no momento da consulta.
Colunas de Escolha
Colunas de escolha (conjuntos de opções / listas de seleção) e colunas de seleção múltipla são comparadas com o rótulo de exibição localizado de cada opção, em vez do valor inteiro subjacente. Rótulos são comparados de forma insensível a maiúsculas e minúsculas e acentuadas na cultura do usuário atual, então digitar cafe corresponderá a uma opção rotulada Café. Quando um ou mais rótulos de opção coincidem, a consulta emite uma condição FetchXML contra os valores correspondentes — uma in condição para colunas de escolha de seleção única, ou contain-values uma condição para colunas de escolha de múltiplas seleções. Quando nenhuma etiqueta corresponde, a coluna não contribui com nenhuma condição (mantendo o OR filtro compacto).
Colunas de escolha honram o mesmo * coringa que as colunas de texto: por padrão, a correspondência começa com (digitando act correspondências Active), e um início * muda para contains (digitando *act correspondências Inactiveadicionais). As linhas correspondentes têm a substring correspondente destacada na grade, exatamente como as correspondências de coluna de texto.
Colunas Numérica e Monetária
Colunas numéricas — int, big int, decimal, double e money — suportam operadores de comparação no termo de busca. A caixa de busca analisa um operador inicial opcional e aplica o correspondente operador de condição FetchXML:
= 100 ou apenas 100 — igual (o padrão quando nenhum operador é especificado)
> 100 — maior que
< 100 — menos que
>= 100 — maior que igual ou maior que
<= 100 — menor que ou igual
Nota
As condições de busca para cada tipo de coluna são adicionadas ao mesmo OR grupo de filtros, de modo que o mesmo termo de busca é avaliado simultaneamente contra colunas de texto, colunas de pesquisa, colunas de escolha e colunas numéricas. Digitar 100 uma grade que tenha tanto uma coluna de nome quanto uma coluna de valor irá corresponder a registros cujo nome começa com100 ou cujo valor é igual a 100. O filtro de busca é sobreposto ao filtro existente da visualização, então as restrições em nível de visualização (como um statecode = 0 filtro) são sempre preservadas.
Desativando a busca
Configurado AllowSearch="false" na grade para esconder completamente a caixa de busca. Isso é útil para grades que contêm apenas um pequeno conjunto fixo de registros, ou onde o filtragem é gerenciada externamente (por exemplo, via uma barra de ferramentas personalizada).
A grade suporta duas estratégias de paginação via o PagingMode parâmetro (Blazor) / pagingMode prop (React). Ambos os modos usam a mesma visualização subjacente, FetchXML, ordenação e busca — apenas a forma como as linhas são reveladas ao usuário difere.
Paged (padrão) — um rodapé clássico Pré-Anterior/Próximo com seletor de página. Ideal para conjuntos de resultados mais curtos e para casos em que o usuário quer pular por número de página ou compartilhar uma página com links profundos na URL.
Virtualize — pergaminho infinito. O rodapé do pager fica oculto, as linhas se acumulam à medida que o usuário passa pela parte inferior renderizada, e a próxima página é buscada automaticamente. Um contador somente leitura "Mostrando 1-N de M" substitui o pager assim que o total estiver disponível. Ideal para listas longas onde o usuário escaneia em vez de navegar por página.
A mesma contact grade da demo principal, mas com PagingMode="GridPagingMode.Virtualize" (Blazor) / pagingMode={PagingMode.Virtualize} (React) e um tamanho menor do bloco, então rolar exerce o acumulador. O rodapé do pager desapareceu — role para baixo para puxar mais páginas e observe o contador no topo da grade se atualizar conforme mais linhas aparecem.
Exemplo de reação
Exemplo de Blazor
Qualquer pessoa pode ver os contatos na grade abaixo. Faça login para criar, visualizar e atualizar seus próprios contatos.
Meus ContatosTodos os Contatos
Meus ContatosTodos os Contatos
Tamanho da página
102050100
Nome completo
Telefone Celular
E-mail
Nome da empresa
Idade
React TypeScript
Razor
Concessões
Nada de ir direto para a página. O modo virtualização sempre começa na primeira página e avança; os consumidores não podem mais pular para a página N. Se você precisa de navegação explícita na página, fique em Paged.
A página não é mantida. Como a posição de rolagem do usuário não é um conceito de página discreta, PersistedStateQueryParameter a chave é p omitida no modo virtualizar. A busca selecionada para visualizar, ordenar e (opt-in) ainda percorreu a URL.
Busca e ordenação ainda funcionam, mas eles resetam o acumulador rolado — mudar a visualização ativa, aplicar uma nova ordenação ou digitar na caixa de busca elimina as linhas carregadas e rebusca do topo.
Oculta o pager / seletor de tamanho de página. O seletor de tamanho de página é substituído por um tamanho fixo de bloco; defina o valor inicial via DefaultItemsPerPage (Blazor) / pageSize (React) para controlar quantas linhas são buscadas por página ativada pelo rolamento.
Modo de Tamanho Completo
Definido FullSize="true" para fazer a grade expandir e preencher toda a altura do seu recipiente pai. Isso é útil quando a grade é o conteúdo principal de uma página.
Definido PersistedStateQueryParameter para um nome de parâmetro de consulta (por exemplo, "gridState") e a grade refletirá seu estado interativo em um único parâmetro de URL sob esse nome. Cada alteração conduzida pelo usuário — trocar a visualização selecionada, paginar, redimensionar o tamanho da página, clicar em cabeçalhos de coluna para ordenar ou digitar (opt-in) digitar na caixa de busca — recodifica o estado e substitui o parâmetro URL no lugar. Quando a página é aberta com o parâmetro presente (favorito, link compartilhado, atualização), a grade lê o parâmetro na primeira carga e restaura todo o estado capturado antes de buscar os dados.
O parâmetro de consulta codifica um objeto JSON compacto com uma chave curta por pedaço de estado. As chaves são propositalmente abreviadas para manter URLs favoritas curtas. Campos que correspondem aos seus padrões naturais são omitidos, então uma grade na página 1 sem ordenação e sem busca produz uma mancha muito menor do que uma com todos os cinco campos preenchidos.
v — o GUID da vista selecionada (minúscula, hifenizada, sem aparelhos). Corresponde a uma das ViewIds / CustomViewDefinitions entradas com as quais a grade foi configurada.
p — o número de página baseado em 1. Omitido quando o usuário está na página 1 (o padrão).
ps — o número de linhas por página. Reflete a última seleção do usuário no menu suspenso do tamanho da página; omitido quando corresponde à grade DefaultItemsPerPage.
s — um conjunto ordenado de diretivas de ordenação. Cada entrada tem c (nome lógico da coluna) e uma opcional d (definida para true decrescente; ascendente é o padrão não marcado, então d é omitida nesse caso). O estado vazio / não ordenado omite completamente o campo. A ordenação multi-coluna é preservada em ordem de precedência.
q — o texto atual da caixa de busca. Só incluído quando a grade foi configurada com IncludeSearchInPersistedState="true" E a caixa tem um valor não vazio. Está desregulado por padrão, já que os termos de busca podem ser sensíveis (por exemplo, nomes de clientes em um contexto de CRM).
Codificação de URL
O estado é serializado como JSON compacto (sem espaço em branco) e codificado por URL no parâmetro de consulta. Uma grade mostrando a página 3 de uma visualização de contato, ordenada por sobrenome, ascendente e depois criada descendente, com a busca "smith" ativada, faria a seguinte carga útil de ida e volta:
O codificador remove qualquer campo que corresponda ao seu padrão natural antes da serialização. A página 1 descarta p, uma lista de ordenação vazia cai s, uma ordenação ascendente não marcada cai d, e uma busca vazia descarta q. Uma grade recém-carregada, sem interação do usuário, codifica para um blob contendo apenas v e ps — impedindo que URLs favoritos cresçam para o estado que o consumidor não tocou.
Comportamento do Histórico do Navegador
Mudanças de estado atualizam a URL com history.replaceState — elas não enviam novas entradas para a pilha traseira. Isso significa que ao clicar Voltar de uma página de grade, retorna à página distinta anterior (a origem de navegação do usuário), e não à combinação de ordenação/página anterior. A troca é intencional: uma única sessão de grade pode gerar dezenas de mudanças de estado, e pressionar cada uma como uma entrada de navegação tornaria o botão Voltar praticamente inútil no restante do app.
Ativando a persistência da busca
Por padrão, o texto de busca é excluído da URL, então o parâmetro é seguro para compartilhamento mesmo quando a grade está filtrando por um termo sensível. Definido IncludeSearchInPersistedState="true" para incluir o valor atual da caixa de busca na carga útil codificada (adicionado como o q campo acima). Uma vez ativada, a busca passa a fazer parte do estado de marcador — o usuário pode copiar a URL e o destinatário fica na mesma combinação de visualização, página, ordenação E filtro.
A forma JSON codificada é idêntica entre as implementações de Blazor e React grid — mesmo nome de parâmetro, mesmas chaves (v / p / ps / s / ), qmesma semântica de valores. Um link produzido por uma pilha é consumível pela outra, então uma organização que executa ambas as superfícies (por exemplo, um portal público do React junto com um app interno de administração do Blazor) pode compartilhar URLs de grade entre elas sem qualquer camada de tradução por pilha.
Múltiplas grades em uma página
Duas grades na mesma página devem usar nomes diferentesPersistedStateQueryParameter. Cada grade apenas lê e escreve seu próprio parâmetro, então reutilizar o mesmo nome faria com que ambas as grades disputassem o mesmo slot de URL — a última gravação vence e a outra grade perde seu estado a cada alteração. Uma convenção típica é nomear o parâmetro com base no papel da grade (por exemplo, contactsState + accountsState).
Grades Multi-Tabela
A MainGrid pode exibir visualizações de diferentes tabelas incluindo IDs de visualização de múltiplas tabelas na ViewIds coleção. Quando o usuário troca de vista, a grade carrega automaticamente os dados da tabela correta. Use o OnClick callback nos botões de navegação para definir dinamicamente a URL com base no nome da tabela da visualização selecionada.
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('Tabela desconhecida');
}
}}
/>
<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('Tabela desconhecida');
}
}}
/>
</GridButtons>
</MainGrid>Blazor
Quando verdade, o usuário pode alterar o número de itens exibidos por página.
AllowDownloadForFileColumns
bool
True
Quando é verdadeiro (o padrão), a grade exibe um ícone de download por linha no borda traseira das células da coluna de arquivo e imagem. Ao clicar nele, o arquivo é transmitido para o navegador do usuário. Defina como false para suprimir o ícone — por exemplo, em modo somente leitura Grades de auditoria onde a exportação de arquivos não é permitida.
AllowEdit
bool
False
A opção deve estar disponível para o usuário ativar a edição em linha para a grade.
AllowNavigateOnPrimaryNameClick
bool
True
Quando é verdadeiro (o padrão) e a grade tem um botão 'editar' registrado (um GridButton com IsOpenRecordButton=true), a célula que renderiza a coluna de nome primário da tabela se torna um hiperlink. Clicar nele, despacha o mesmo invocação por linha que um duplo clique na linha faria — para que o usuário possa pular para a edição form (ou a URL de edição navegada, dependendo do botão registrado) sem antes Selecionando a fileira. Defina como false para suprimir o hiperlink e renderizar o célula de nome primário como texto simples. Não tem efeito quando nenhum botão de edição está registrado.
AllowNavigateOnRowDoubleClick
bool
True
Quando é verdadeiro (o padrão) e a grade tem um botão 'editar' registrado (um GridButton com IsOpenRecordButton=true), cliqueando duas vezes em uma linha invoca o OnClick desse botão para o registro da linha — abertura a janela de diálogo de edição ou navegar até a URL de editar, o que o botão usar. Definir para false para suprimir o manipulador de duplo clique. Não tem efeito quando não há botão de editar está registrada.
AllowPreviewForFileColumns
bool
True
Quando verdadeiro (o padrão), a grade exibe um ícone de pré-visualização 'olho' por linha no borda traseira de células de colunas de arquivos e imagens cujo conteúdo pode ser renderizado em linha (imagens, PDFs, texto simples). Defina como false para suprimir o ícone — por exemplo, em grades onde as colunas não deveriam servir como ponto de entrada de pré-visualização.
AllowSearch
bool
True
O usuário deveria ter permissão para pesquisar na grade.
BorderVisible
bool
True
Controle se uma borda visível é renderizada ao redor da grade.
Buttons
RenderFragment?
Fragmento de renderização opcional usado para definir a barra de ferramentas de botões exibida acima da grade.
Columns
RenderFragment?
Fragmento opcional Components.GridColumns carregando declarado pelo consumidor Components.GridColumn crianças. Quando fornecida, a grade muda para modo substituir: apenas as colunas declaradas renderizam (em declarado ordem), a projeção FetchXML é reescrita para corresponder, e o A lista de colunas do Underlying View é ignorada. null deixa a grade em seu comportamento padrão (gerar colunas automaticamente a partir de o conjunto de colunas resolvidas da vista).
CustomViewDefinitions
List<GridViewDefinition>?
Visualizações personalizadas para exibir no menu suspenso.
DataSource
ViewDataSource?
Opcional compartilhado Data.ViewDataSource. Quando definido, a grade lê suas linhas + contagem total da fonte de dados em vez de emitindo seus próprios RetrieveRecordsAsync(System.String) chamada — a mesma fonte de dados pode impulsionar um irmão <DataverseChart> ou uma segunda grade para que todos eles Paginar / filtrar / pesquisar juntos em uma única ida e volta. Uso independente (não GridBase.DataSource) mantém o máquina de estados internos existente — a grade compõe FetchXML e busca diretamente via IPowerPortalsProService . O que a fonte de dados NÃO possui: interface por grade estado (linhas selecionadas, linha pendente criada / atualizada / deleta, larguras das colunas). Esses permanecem em grade local — dois grades compartilhando um A fonte de dados ainda pode ter seleção independente e por grade Pendentes de edições. Quando ViewDataSource.Highlight é definido (por exemplo, via um clique de fatia de gráfico no modo 'destaque' de filtro cruzado), linhas cuja valor na coluna destacada não corresponde visualmente silenciado por uma classe CSS; os dados da linha + seleção são não afetado (o filtro cruzado suave é puramente de estilo).
DefaultItemsPerPage
int
50
Número padrão de registros para carregar em uma página.
DefaultViewId
Guid?
ID da visão que a grade deve exibir no carregamento inicial.
Editable
bool
False
A edição em linha está ativada para a grade?
Filters
IReadOnlyList<GridFilterBase>?
Filtros adicionais do lado do servidor AND foram incorporados na visualização resolvida FetchXML antes de paginar/ordenar/pesquisar é ativado. Encaminhado para Query.IFetchXmlQueryComposer's FetchXmlQueryOptions.Filters, Assim, cada entrada é despachada por tipo de runtime (por exemplo, Models.RelationshipFilter AND-funde uma relação link-entidade). Uso típico: o seletor LinkExistingRecordGridGridButton passa um Models.RelationshipFilter com RelationshipFilterMode.ExcludeExistingRecords Então já- registros vinculados são ocultos do diálogo de consulta M2M. Combina aditivamente com o próprio sistema interno do SubGrid filtro de relacionamento (que está embutido diretamente no FetchXML em vez de passar pelo slot Filtros do compositor) — ambos terminam Na mesma consulta.
FullSize
bool
False
Quando é verdade, a grade se expande para preencher todo o espaço vertical disponível em vez de usar uma altura mínima fixa.
HidePaging
bool
False
Forçar o tamanho da página e os componentes de paginação a serem ocultados. Só faça isso quando o número de itens for conhecido e o tamanho da página estiver definido para algo maior que a contagem de itens.
IncludeSearchInPersistedState
bool
False
Quando verdadeiro, o texto ativo da busca é incluído no persistente parâmetro de URL de estado (sob o campo q ). Padrão para falso — os termos de busca podem ser sensíveis, acumular no histórico do navegador, e vazam para os referentes HTTP, então a grade os mantém fora da URL, a menos que O consumidor opta explicitamente por participar. Não tem efeito quando GridBase.PersistedStateQueryParameter não está definido.
IsDirty
bool
False
Indica se a grade tem operações de criação, atualização ou exclusão não salvas pendentes.
LoadedRecords
IEnumerable<TableRecord>
Registros atualmente renderizados na grade (a página mais recente de resultados). Destinado a comandos de barra de ferramentas que precisam agir sobre 'tudo que é exibido' — por exemplo, um bulk botão de download. Não se estende por páginas; Operações de bloco de páginas devem rodar seus Em vez disso, buscar a própria busca não paginada.
MaxHeight
string?
Altura máxima que o controle da grade deve alcançar.
MinHeight
string?
300px
Altura mínima que o controle da grade deve ocupar.
Mode
GridMode
RecordSelection
Define o modo comportamental da grade, como interação padrão ou modo de seleção de registros.
PageSizes
IEnumerable<int>
Coleção dos tamanhos de página disponíveis para a grade.
PagingMode
GridPagingMode
Paged
Determina se a grade usa paginação tradicional ou virtualização de rolagem infinita.
PersistedRowsSnapshot
PersistedGridRowsSnapshot?
Pré-renderização do servidor → handoff interativo para a página renderizada de linhas. A estrutura Essa propriedade persiste automaticamente no final do pré-renderizado e a reidrata antes GridBase.OnInitializedAsync no lado interativo, então a busca de dados pode ser Pulei a primeira renderização interativa. Keyed pela posição da árvore de renderização pelo framework; O PersistedGridRowsSnapshot.ViewId campo é verificado no consumo tempo, então uma rerenderização contra uma vista diferente descarta as linhas obsoletas. Público segundo o requisito do framework — [PersistentState] só vê propriedades públicas via reflexão — mas não destinada a ser colocada externamente.
PersistedStateQueryParameter
string?
Nome do parâmetro de sequência de consulta URL para persistir a interatividade da grade Estade para. Quando definido, a grade lê esse parâmetro na carga inicial e seeds a visualização ativa, número da página, tamanho da página e ordenação a partir dela; Ações subsequentes do usuário (visualizar escolha, mudança de página, ordenação de cabeçalho, etc.) Escreva o novo estado de volta via Components.NavigationManager's Caminho de substituição de estado. Persistência sobrevive à atualização de página e aos favoritos.
SelectedRecords
IEnumerable<TableRecord>
Registros que estão atualmente selecionados na Grade.
SelectFromEntireRow
bool
True
Quando certo, clicar em qualquer lugar de uma linha seleciona; quando falso, apenas a caixa de seleção seleciona a linha.
SelectMode
DataGridSelectMode
Multiple
Determina se a grade permite seleção de uma ou múltiplas linhas.
TableName
string?
O nome lógico da tabela cujas opiniões públicas deveriam ser carregadas. Aplicável somente quando nenhum valor é especificado para GridBase.DefaultViewId ou GridBase.ViewIds.
Title
string?
Nome para exibir quando o menu suspenso da visualização não estiver exibido.
Retorno opcional que roda imediatamente após o carregamento de uma visualização e antes da grade ser usada É para construir colunas ou consultas. Retorne um modificado Models.GridViewDefinition para transforme o que a grade renderiza — por exemplo, para garantir uma coluna específica está sempre presente independentemente da configuração da própria visão. Assíncrono para que os chamadores possam consulte caches de metadados, serviços ou outros recursos assíncronos ao decidir o que fazer incluir.
ViewIds
IEnumerable<Guid>?
Lista de ids das visualizações às quais a grade deve se limitar no menu suspenso da visualização.
ViewSort
ViewSort
NameAscending
Ordene as visualizações no menu suspenso.
Nome:AllowChangingPageSize
Tipo:bool
Padrão:True
Descrição:Quando verdade, o usuário pode alterar o número de itens exibidos por página.
Nome:AllowDownloadForFileColumns
Tipo:bool
Padrão:True
Descrição:Quando é verdadeiro (o padrão), a grade exibe um ícone de download por linha no borda traseira das células da coluna de arquivo e imagem. Ao clicar nele, o arquivo é transmitido para o navegador do usuário. Defina como false para suprimir o ícone — por exemplo, em modo somente leitura Grades de auditoria onde a exportação de arquivos não é permitida.
Nome:AllowEdit
Tipo:bool
Padrão:False
Descrição:A opção deve estar disponível para o usuário ativar a edição em linha para a grade.
Nome:AllowNavigateOnPrimaryNameClick
Tipo:bool
Padrão:True
Descrição:Quando é verdadeiro (o padrão) e a grade tem um botão 'editar' registrado (um GridButton com IsOpenRecordButton=true), a célula que renderiza a coluna de nome primário da tabela se torna um hiperlink. Clicar nele, despacha o mesmo invocação por linha que um duplo clique na linha faria — para que o usuário possa pular para a edição form (ou a URL de edição navegada, dependendo do botão registrado) sem antes Selecionando a fileira. Defina como false para suprimir o hiperlink e renderizar o célula de nome primário como texto simples. Não tem efeito quando nenhum botão de edição está registrado.
Nome:AllowNavigateOnRowDoubleClick
Tipo:bool
Padrão:True
Descrição:Quando é verdadeiro (o padrão) e a grade tem um botão 'editar' registrado (um GridButton com IsOpenRecordButton=true), cliqueando duas vezes em uma linha invoca o OnClick desse botão para o registro da linha — abertura a janela de diálogo de edição ou navegar até a URL de editar, o que o botão usar. Definir para false para suprimir o manipulador de duplo clique. Não tem efeito quando não há botão de editar está registrada.
Nome:AllowPreviewForFileColumns
Tipo:bool
Padrão:True
Descrição:Quando verdadeiro (o padrão), a grade exibe um ícone de pré-visualização 'olho' por linha no borda traseira de células de colunas de arquivos e imagens cujo conteúdo pode ser renderizado em linha (imagens, PDFs, texto simples). Defina como false para suprimir o ícone — por exemplo, em grades onde as colunas não deveriam servir como ponto de entrada de pré-visualização.
Nome:AllowSearch
Tipo:bool
Padrão:True
Descrição:O usuário deveria ter permissão para pesquisar na grade.
Nome:BorderVisible
Tipo:bool
Padrão:True
Descrição:Controle se uma borda visível é renderizada ao redor da grade.
Nome:Buttons
Tipo:RenderFragment?
Descrição:Fragmento de renderização opcional usado para definir a barra de ferramentas de botões exibida acima da grade.
Nome:Columns
Tipo:RenderFragment?
Descrição:Fragmento opcional Components.GridColumns carregando declarado pelo consumidor Components.GridColumn crianças. Quando fornecida, a grade muda para modo substituir: apenas as colunas declaradas renderizam (em declarado ordem), a projeção FetchXML é reescrita para corresponder, e o A lista de colunas do Underlying View é ignorada. null deixa a grade em seu comportamento padrão (gerar colunas automaticamente a partir de o conjunto de colunas resolvidas da vista).
Nome:CustomViewDefinitions
Tipo:List<GridViewDefinition>?
Descrição:Visualizações personalizadas para exibir no menu suspenso.
Nome:DataSource
Tipo:ViewDataSource?
Descrição:Opcional compartilhado Data.ViewDataSource. Quando definido, a grade lê suas linhas + contagem total da fonte de dados em vez de emitindo seus próprios RetrieveRecordsAsync(System.String) chamada — a mesma fonte de dados pode impulsionar um irmão <DataverseChart> ou uma segunda grade para que todos eles Paginar / filtrar / pesquisar juntos em uma única ida e volta. Uso independente (não GridBase.DataSource) mantém o máquina de estados internos existente — a grade compõe FetchXML e busca diretamente via IPowerPortalsProService . O que a fonte de dados NÃO possui: interface por grade estado (linhas selecionadas, linha pendente criada / atualizada / deleta, larguras das colunas). Esses permanecem em grade local — dois grades compartilhando um A fonte de dados ainda pode ter seleção independente e por grade Pendentes de edições. Quando ViewDataSource.Highlight é definido (por exemplo, via um clique de fatia de gráfico no modo 'destaque' de filtro cruzado), linhas cuja valor na coluna destacada não corresponde visualmente silenciado por uma classe CSS; os dados da linha + seleção são não afetado (o filtro cruzado suave é puramente de estilo).
Nome:DefaultItemsPerPage
Tipo:int
Padrão:50
Descrição:Número padrão de registros para carregar em uma página.
Nome:DefaultViewId
Tipo:Guid?
Descrição:ID da visão que a grade deve exibir no carregamento inicial.
Nome:Editable
Tipo:bool
Padrão:False
Descrição:A edição em linha está ativada para a grade?
Nome:Filters
Tipo:IReadOnlyList<GridFilterBase>?
Descrição:Filtros adicionais do lado do servidor AND foram incorporados na visualização resolvida FetchXML antes de paginar/ordenar/pesquisar é ativado. Encaminhado para Query.IFetchXmlQueryComposer's FetchXmlQueryOptions.Filters, Assim, cada entrada é despachada por tipo de runtime (por exemplo, Models.RelationshipFilter AND-funde uma relação link-entidade). Uso típico: o seletor LinkExistingRecordGridGridButton passa um Models.RelationshipFilter com RelationshipFilterMode.ExcludeExistingRecords Então já- registros vinculados são ocultos do diálogo de consulta M2M. Combina aditivamente com o próprio sistema interno do SubGrid filtro de relacionamento (que está embutido diretamente no FetchXML em vez de passar pelo slot Filtros do compositor) — ambos terminam Na mesma consulta.
Nome:FullSize
Tipo:bool
Padrão:False
Descrição:Quando é verdade, a grade se expande para preencher todo o espaço vertical disponível em vez de usar uma altura mínima fixa.
Nome:HidePaging
Tipo:bool
Padrão:False
Descrição:Forçar o tamanho da página e os componentes de paginação a serem ocultados. Só faça isso quando o número de itens for conhecido e o tamanho da página estiver definido para algo maior que a contagem de itens.
Nome:IncludeSearchInPersistedState
Tipo:bool
Padrão:False
Descrição:Quando verdadeiro, o texto ativo da busca é incluído no persistente parâmetro de URL de estado (sob o campo q ). Padrão para falso — os termos de busca podem ser sensíveis, acumular no histórico do navegador, e vazam para os referentes HTTP, então a grade os mantém fora da URL, a menos que O consumidor opta explicitamente por participar. Não tem efeito quando GridBase.PersistedStateQueryParameter não está definido.
Nome:IsDirty
Tipo:bool
Padrão:False
Descrição:Indica se a grade tem operações de criação, atualização ou exclusão não salvas pendentes.
Nome:LoadedRecords
Tipo:IEnumerable<TableRecord>
Descrição:Registros atualmente renderizados na grade (a página mais recente de resultados). Destinado a comandos de barra de ferramentas que precisam agir sobre 'tudo que é exibido' — por exemplo, um bulk botão de download. Não se estende por páginas; Operações de bloco de páginas devem rodar seus Em vez disso, buscar a própria busca não paginada.
Nome:MaxHeight
Tipo:string?
Descrição:Altura máxima que o controle da grade deve alcançar.
Nome:MinHeight
Tipo:string?
Padrão:300px
Descrição:Altura mínima que o controle da grade deve ocupar.
Nome:Mode
Tipo:GridMode
Padrão:RecordSelection
Descrição:Define o modo comportamental da grade, como interação padrão ou modo de seleção de registros.
Nome:PageSizes
Tipo:IEnumerable<int>
Descrição:Coleção dos tamanhos de página disponíveis para a grade.
Nome:PagingMode
Tipo:GridPagingMode
Padrão:Paged
Descrição:Determina se a grade usa paginação tradicional ou virtualização de rolagem infinita.
Nome:PersistedRowsSnapshot
Tipo:PersistedGridRowsSnapshot?
Descrição:Pré-renderização do servidor → handoff interativo para a página renderizada de linhas. A estrutura Essa propriedade persiste automaticamente no final do pré-renderizado e a reidrata antes GridBase.OnInitializedAsync no lado interativo, então a busca de dados pode ser Pulei a primeira renderização interativa. Keyed pela posição da árvore de renderização pelo framework; O PersistedGridRowsSnapshot.ViewId campo é verificado no consumo tempo, então uma rerenderização contra uma vista diferente descarta as linhas obsoletas. Público segundo o requisito do framework — [PersistentState] só vê propriedades públicas via reflexão — mas não destinada a ser colocada externamente.
Nome:PersistedStateQueryParameter
Tipo:string?
Descrição:Nome do parâmetro de sequência de consulta URL para persistir a interatividade da grade Estade para. Quando definido, a grade lê esse parâmetro na carga inicial e seeds a visualização ativa, número da página, tamanho da página e ordenação a partir dela; Ações subsequentes do usuário (visualizar escolha, mudança de página, ordenação de cabeçalho, etc.) Escreva o novo estado de volta via Components.NavigationManager's Caminho de substituição de estado. Persistência sobrevive à atualização de página e aos favoritos.
Nome:SelectedRecords
Tipo:IEnumerable<TableRecord>
Descrição:Registros que estão atualmente selecionados na Grade.
Nome:SelectFromEntireRow
Tipo:bool
Padrão:True
Descrição:Quando certo, clicar em qualquer lugar de uma linha seleciona; quando falso, apenas a caixa de seleção seleciona a linha.
Nome:SelectMode
Tipo:DataGridSelectMode
Padrão:Multiple
Descrição:Determina se a grade permite seleção de uma ou múltiplas linhas.
Nome:TableName
Tipo:string?
Descrição:O nome lógico da tabela cujas opiniões públicas deveriam ser carregadas. Aplicável somente quando nenhum valor é especificado para GridBase.DefaultViewId ou GridBase.ViewIds.
Nome:Title
Tipo:string?
Descrição:Nome para exibir quando o menu suspenso da visualização não estiver exibido.
Descrição:Retorno opcional que roda imediatamente após o carregamento de uma visualização e antes da grade ser usada É para construir colunas ou consultas. Retorne um modificado Models.GridViewDefinition para transforme o que a grade renderiza — por exemplo, para garantir uma coluna específica está sempre presente independentemente da configuração da própria visão. Assíncrono para que os chamadores possam consulte caches de metadados, serviços ou outros recursos assíncronos ao decidir o que fazer incluir.
Nome:ViewIds
Tipo:IEnumerable<Guid>?
Descrição:Lista de ids das visualizações às quais a grade deve se limitar no menu suspenso da visualização.
Nome:ViewSort
Tipo:ViewSort
Padrão:NameAscending
Descrição:Ordene as visualizações no menu suspenso.
Eventos
Nome
Tipo
Descrição
EditableChanged
EventCallback<bool>
O callback é invocado quando o estado da edição inline muda.
SelectedRecordsChanged
EventCallback<IEnumerable<TableRecord>>
O callback é invocado quando a coleção de registros selecionados muda.
Nome:EditableChanged
Tipo:EventCallback<bool>
Descrição:O callback é invocado quando o estado da edição inline muda.
Nome:SelectedRecordsChanged
Tipo:EventCallback<IEnumerable<TableRecord>>
Descrição:O callback é invocado quando a coleção de registros selecionados muda.
Métodos
Nome
Parâmetros
Tipo
Descrição
ClearSelectionAsync
Task
Limpa todas as linhas selecionadas no momento.
OpenFileDownloadAsync
TableRecord record string columnName
Task
Ele busca os bytes da coluna do arquivo/imagem e record os transmite em streaming para o navegador do usuário como download. Invocado pelo ícone de download por linha no arquivo e células de imagem.
OpenFilePreviewAsync
TableRecord record string columnName
Task
Abre o diálogo de pré-visualização inline para a coluna columnName de arquivo/imagem em record. Invocado pelo ícone de pré-visualização por linha nas células de arquivo/imagem e também disponível para compor componentes (por exemplo, um botão de barra de ferramentas em um wrapping Grid) que querem um ponto de entrada programático.
RefreshAsync
bool forceRefresh
Task
Instrui a grade a buscar novamente e renderizar os dados atuais da fonte de dados fornecida.
Validate
bool
Valida todas as linhas editáveis na grade.
Nome:ClearSelectionAsync
Tipo:Task
Descrição:Limpa todas as linhas selecionadas no momento.
Nome:OpenFileDownloadAsync
Parâmetros:TableRecord record string columnName
Tipo:Task
Descrição:Ele busca os bytes da coluna do arquivo/imagem e record os transmite em streaming para o navegador do usuário como download. Invocado pelo ícone de download por linha no arquivo e células de imagem.
Nome:OpenFilePreviewAsync
Parâmetros:TableRecord record string columnName
Tipo:Task
Descrição:Abre o diálogo de pré-visualização inline para a coluna columnName de arquivo/imagem em record. Invocado pelo ícone de pré-visualização por linha nas células de arquivo/imagem e também disponível para compor componentes (por exemplo, um botão de barra de ferramentas em um wrapping Grid) que querem um ponto de entrada programático.
Nome:RefreshAsync
Parâmetros:bool forceRefresh
Tipo:Task
Descrição:Instrui a grade a buscar novamente e renderizar os dados atuais da fonte de dados fornecida.
Nome:Validate
Tipo:bool
Descrição:Valida todas as linhas editáveis na grade.
GridViewDefinition Classe
Propriedades
Nome
Tipo
Padrão
Descrição
Columns
List<ViewColumn>
As colunas exibidas na grade, incluindo seus nomes lógicos e larguras de pixels.
DisplayName
string?
Nome de exibição opcional para esta visualização. Quando definido, este é usado como o rótulo padrão no Visualizar o seletor suspenso. Uma entrada de localização em mesas. {NomeTabla}.visualizações. {Id}.label tem precedência se existir.
FetchXml
string
A consulta FetchXML que define quais registros e colunas são recuperados para essa visão.
TableName
string
O nome lógico da tabela Dataverse é essa consulta de visão.
Nome:Columns
Tipo:List<ViewColumn>
Descrição:As colunas exibidas na grade, incluindo seus nomes lógicos e larguras de pixels.
Nome:DisplayName
Tipo:string?
Descrição:Nome de exibição opcional para esta visualização. Quando definido, este é usado como o rótulo padrão no Visualizar o seletor suspenso. Uma entrada de localização em mesas. {NomeTabla}.visualizações. {Id}.label tem precedência se existir.
Nome:FetchXml
Tipo:string
Descrição:A consulta FetchXML que define quais registros e colunas são recuperados para essa visão.
Nome:TableName
Tipo:string
Descrição:O nome lógico da tabela Dataverse é essa consulta de visão.
Default RecordSelection
Paged Virtualize
Single SingleSticky Multiple
Default NameAscending NameDescending
Apply começa com um filtro nas colunas seguintes:
E-mail Nome completo Nome da empresa Telefone Celular
Apply começa com um filtro nas colunas seguintes:
E-mail Nome completo Nome da empresa Telefone Celular
Apply começa com um filtro nas colunas seguintes:
E-mail Nome completo Nome da empresa Telefone Celular
Utiliza comparações numéricas nas colunas a seguir:
Idade
Apply começa com um filtro nas colunas seguintes:
E-mail Nome completo Nome da empresa Telefone Celular
Utiliza comparações numéricas nas colunas a seguir: