MultiTableSearch é a busca global de um portal: ele pesquisa várias tabelas ao mesmo tempo e lista o que encontra pelo nome — como cartas, uma lista ou uma grade — cada linha com sua tabela, seu nome e as colunas que a visualização da tabela mostra, e o que a busca correspondeu destacado. Cada tabela é lida com a segurança de uma grade, página por página, então uma tabela é lida mais adiante apenas quando as linhas mostradas precisam.
<MultiTableSearch /><MultiTableSearch />Digite um nome, um endereço de e-mail ou uma cidade: as contas, contatos e oportunidades da demo são buscados juntos, e cada nome abre a página de seu registro. Escolha um layout, ordene as linhas por nome ou por quando foram alteradas pela última vez, ou agrupe-as por tabela nas Configurações e ligue ou desative as tabelas no Filtro, que mostra quantas linhas de cada tabela foram encontradas. Faça login, mude o que cada tabela mostra e salve suas próprias visualizações.
MultiTableSearchBox é uma caixa de busca para o cabeçalho de uma página. Enquanto você digita, sugere as primeiras linhas que coincidem, cada uma com sua tabela, e ao escolher uma se abre a página do registro; Veja todos os resultados, primeiro na lista, abre a página com — MultiTableSearch aqui, a busca acima. Sem nada digitado, ele apresenta suas buscas recentes e os registros que você abriu. As setas se movem pelas sugestões, Enter escolhe uma e Escape fecha.
<MultiTableSearchBox searchPageUrl="search" onNavigate={navigate} /><MultiTableSearchBox SearchPageUrl="search" />SearchPageUrl (searchPageUrl) é a página com , MultiTableSearchdado o que buscar como ?q=. Tables limita as tabelas pesquisadas, MaximumResults quantas linhas são sugeridas (6 a menos que definido), e RecordUrl, OnSelect e ShowRecordLinks abra uma linha como ' MultiTableSearchs fazem. No React, dê a ele um onNavigate para que suas páginas abram pelo seu roteador.
Ctrl+K (⌘K em um Mac) em qualquer lugar da página, e / onde nada está sendo digitado, coloque o cursor na caixa; KeyboardShortcut (keyboardShortcut) desliga isso, assim como uma página com duas caixas faz para uma. Com Collapsible (collapsible), uma tela estreita mostra a caixa como um botão de busca até que ela seja aberta, e ela se dobra novamente quando fica vazia.
<MultiTableSearchBox searchPageUrl="search" collapsible keyboardShortcut onNavigate={navigate} /><MultiTableSearchBox SearchPageUrl="search" Collapsible="true" KeyboardShortcut="true" />Registre as tabelas para buscar, coloque um MultiTableSearch em uma página própria e a caixa no cabeçalho do layout apontando para ela. Cada linha então abre a página do seu registro. Os modelos de projeto vêm configurados dessa forma, para contas e contatos.
// As mesas buscaram, e as páginas se abriram em suas linhas.
builder.Services.AddMultiTableSource("account", t => t.ForSearch());
builder.Services.AddMultiTableSource("contact", t => t.ForSearch());
builder.Services.AddRecordPage("account", "accounts/account?accountId={id}");
builder.Services.AddRecordPage("contact", "contacts/contact?contactId={id}");
// A página de busca.
{ path: 'search', element: <MultiTableSearch allowSavedViews showTotals onNavigate={navigate} /> }
// No cabeçalho do layout.
<MultiTableSearchBox searchPageUrl="search" collapsible onNavigate={navigate} style={{ width: 'min(320px, 40vw)' }} />@* A página de busca. *@
@attribute [Route("search")]
<MultiTableSearch AllowSavedViews="true" ShowTotals="true" />
@* No cabeçalho do layout. *@
<MultiTableSearchBox SearchPageUrl="search" Width="min(320px, 40vw)" Collapsible="true" />Uma busca lê apenas as tabelas registradas para ela, com ForSearch. Uma tabela registrada apenas para buscas fica fora de linhas do tempo, calendários e mapas, e não precisa de data; registrar uma tabela novamente adiciona aos controles para os quais ela é. Notas e atividades são registradas para linhas do tempo e calendários por padrão: para buscar apenas um, remova-o antes RemoveMultiTableSource de registrá-lo novamente.
builder.Services.AddMultiTableSource("account", t => t.ForSearch());
builder.Services.AddMultiTableSource("contact", t => t.ForSearch());
// E-mails nas buscas também, assim como em timelines e calendários.
builder.Services.AddMultiTableSource("email", t => t.ForSearch());
Sem uma visualização própria, uma tabela é lida através da visualização de Busca Rápida: suas linhas intituladas pelo nome principal da tabela, mostrando as colunas da visualização, e pesquisada nas colunas de achar — conforme a própria busca do Dynamics a lê.
Uma visualização registrada para busca diz, tabela por tabela, quais linhas são pesquisadas e como elas aparecem. O FetchXML de cada tabela carrega tudo.
builder.Services.AddMultiTableView(customersViewId, "Customers", v => v
.ForSearch()
.Table("account", t => t.FetchXml("""
<fetch><entity name="account">
<attribute name="name" /><attribute name="emailaddress1" /><attribute name="telephone1" />
<order attribute="name" />
<filter type="and">
<condition attribute="statecode" operator="eq" value="0" />
<filter type="or" isquickfindfields="1">
<condition attribute="name" operator="like" value="{0}" />
<condition attribute="emailaddress1" operator="like" value="{0}" />
</filter>
</filter>
</entity></fetch>
"""))
.Table("contact"));
Cada linha é nomeada pelo título da tabela — seu nome principal, a menos que o registro defina Title. A primeira <order> linha da consulta é a ordem em que as linhas estão listadas, e mostra a primeira entre suas colunas onde não é o título; seus <attribute>s são as colunas que mostram, uma tabela unida entre elas; seu filtro de busca rápida (isquickfindfields="1") nomeia as colunas que uma busca consulta; e seus outros filtros escolhem as linhas. Uma tabela sem consulta é lida através da visualização de Busca Rápida, em ordem de seu título.
As linhas de várias tabelas são listadas em uma única ordem, então cada tabela deve ser ordenada por uma coluna do mesmo tipo — texto, um número ou uma data. Uma tabela ordenada por uma coluna de outro tipo diferente da primeira tabela é deixada de fora da busca e reportada, e o restante é mostrado.
OrderBy (orderBy) ordena as linhas de cada tabela da mesma forma, seja qual for o valor da visualização: pelo título, por quando a linha foi alterada pela última vez (ModifiedOn) ou pela data em que foi criada (CreatedOn); View mantém a própria ordem de cada visualização. De qualquer forma, as linhas mantêm seus nomes, e uma data pela qual foram ordenadas aparece primeiro entre suas colunas. O usuário escolhe a ordem nas Configurações, e uma visualização salva a mantém.
<MultiTableSearch orderBy={MultiTablePageOrder.ModifiedOn} descending /><MultiTableSearch OrderBy="MultiTablePageOrder.ModifiedOn" Descending="true" />BestMatch, o padrão, coloca as linhas cujo título corresponde à busca primeiro, por título — ascendente, um título exato antes dos longos que começa — e depois todas as outras linhas que coincidem, por título. A classificação vale em tabelas e páginas: nenhuma outra linha aparece enquanto qualquer tabela ainda tem um título correspondente para ler. Configurado View para manter a ordem de cada visualização.
<MultiTableSearch orderBy={MultiTablePageOrder.View} /><MultiTableSearch OrderBy="MultiTablePageOrder.View" /><MultiTableSearch defaultViewId={customersViewId} /><MultiTableSearch DefaultViewId="customersViewId" />Uma busca funciona como a de uma grade: uma linha corresponde quando uma coluna de busca começa com o que foi digitado, ou contém após um início *, ignorando maiúsculas e acentos. Buscas correspondem pelo nome, escolhas pelo rótulo e colunas numeradas e datas por >, <, >= ou <= antes de um número, um dia ou um ano.
Cada linha mostra qual de suas colunas correspondeu, destacando o que foi digitado; uma coluna de busca que correspondeu, mas não é mostrada, está listada sob as outras, então nenhuma linha é encontrada sem um motivo. Sem nada digitado, a busca não mostra nada.
O filtro lista cada tabela com quantas de suas linhas foram encontradas, assim como os títulos das linhas agrupadas por tabela: uma tabela com mais para ler do que mostrada diz isso — Contas (25+) — e sua contagem cresce à medida que mais são lidas.
Com ShowTotals () cada tabela é nomeada com cada linha dela que corresponde — Contas (1.254) — contadas quando a primeira página é lida: mais uma consulta por tabela, executada com o acesso próprio do usuário e separada além do limite de 50.000 linhas do Dataverse que uma leitura agregadashowTotals.
<MultiTableSearch showTotals /><MultiTableSearch ShowTotals="true" />As setas se movem da caixa de busca para as fileiras e entre elas, e Home e End vão para a primeira e a última; Para cima a partir da primeira volta para a caixa.
Um leitor de tela ouve quantas linhas foram encontradas depois que a busca as leu, e que há mais para carregar.
O filtro oferece três filtros de cada tabela ao mesmo tempo: Meus registros, Registros Ativos e quando as linhas foram alteradas pela última vez — nos últimos 7 ou 30 dias, ou no último ano. MineOnly , ActiveOnly ModifiedWithinDays e (mineOnly, activeOnly, modifiedWithinDays) definam-nos conforme a busca se abre, e uma visualização salva os mantém.
<MultiTableSearch activeOnly modifiedWithinDays={30} /><MultiTableSearch ActiveOnly="true" ModifiedWithinDays="30" />Os registros de um usuário são aquelas tabelas que registram como proprietários de segurança: as colunas de contato são RowsOwnedByContact e OwnedBy regras definidas quando uma linha é criada, incluindo listas de partes. Meus registros são oferecidos aos usuários logados, e uma tabela que não registra nenhum proprietário para eles não é pesquisada enquanto está ativa — a busca nomeia. Registros ativos são aqueles cujo status é 0, das tabelas que têm um registro.
A busca mantém o que o usuário procurou e os registros que abriu nela, e sem nada digitado os oferece novamente, com uma forma de limpá-los. Eles são mantidos no navegador do usuário, cada usuário separados, e compartilhados com um MultiTableSearchBox. ShowRecent (showRecent) os desliga.
Regarding (regarding) pesquisa apenas as linhas sobre um registro, através das tabelas referentes à coluna: notas' objectid, atividades' regardingobjectid (com as atividades das quais o registro participa), e para outras tabelas a coluna seus nomes de registro com Regarding.
builder.Services.AddMultiTableSource("contact", t => t.Regarding("parentcustomerid").ForSearch());
builder.Services.AddMultiTableSource("opportunity", t => t.Regarding("customerid").ForSearch());
<MultiTableSearch regarding={account} /><MultiTableSearch Regarding="@account" />Uma tabela sem tal coluna não tem nada sobre o registro para pesquisar, então ela é omitida e nomeada acima dos resultados.
As notas já são registradas para as linhas do tempo. Registre-as também para a busca, nomeando as colunas que a busca visita, pois as notas não têm visualização de Busca Rápida — o nome do arquivo delas está entre elas, e uma busca encontra anexos por nome:
builder.Services.AddMultiTableSource("annotation", t => t
.SearchColumns("subject", "notetext", "filename")
.ForSearch());
A linha de uma nota é titulada pelo seu sujeito. Apenas as notas destinadas ao portal são lidas, como em todo lugar: aquelas cujo texto começa com *WEB*. Na página de um registro, uma busca encontra as notas sobre ele.
Layout escolhe cartas, uma lista ou uma grade, que o usuário pode alterar a partir da barra de ferramentas, a menos que AllowLayoutChange esteja desligada. GroupByTable mostra as linhas de cada tabela sob seu nome com um Mostrar mais do próprio, e Descending lista as linhas da última para a primeira. PageSize é quantas linhas aparecem ao mesmo tempo, e os usuários escolhem outra nas Configurações entre PageSizes (pageSizes): 10, 25, 50 e 100, a menos que esteja definida, uma lista vazia sem escolha. Uma visualização salva mantém a escolhida.
<MultiTableSearch layout={MultiTableSearchLayout.List} groupByTable pageSize={10} /><MultiTableSearch Layout="MultiTableSearchLayout.List" GroupByTable="true" PageSize="10" />ItemTemplate (renderItem em React ) desenha uma linha do jeito da página.
O nome de uma linha faz um link para a página do seu registro, registrada em AddRecordPage (veja Páginas de Registro), onde sua tabela tem uma. RecordUrl (recordUrl) faz com que ela linke para outro lugar; OnSelect (onSelect) faz com que a página gerencie a escolha, pois uma linha RecordUrl não dá link; e ShowRecordLinks (showRecordLinks) desativa os links das páginas de registro.
<MultiTableSearch recordUrl={(item) => `/${item.table}/${item.id}`} /><MultiTableSearch RecordUrl="@(item => $"/{item.Table}/{item.Id}")" />No React, dê à busca um onNavigate, como no navigatedo React Router , e um clique em um link passa pelo seu roteador; sem um, é um link comum.
Com AllowSavedViews, usuários logados salvam as tabelas mostradas, o que cada uma mostra e como a busca é organizada como visualizações próprias, oferecidas ao lado das páginas, e escolhem suas vistas padrão e ocultas. Elas são mantidas como visualizações de várias tabelas que nomeiam buscas, então as visualizações salvas em timelines e calendários não são oferecidas aqui, nem essas ali. SavedViewsKey mantém as visualizações da busca para si.
Os filtros de Editar do Filter abrem a consulta de cada tabela como uma aba: a coluna pela qual suas linhas estão ordenadas, as colunas que elas mostram, as colunas que uma busca consulta e as linhas que ela lê.
A partir das visualizações de gerenciamento, um usuário pode fornecer as colunas de uma visualização com seus próprios títulos, já que as colunas da grade podem ser retituladas.
<MultiTableSearch allowSavedViews savedViewsKey="site-search" /><MultiTableSearch AllowSavedViews="true" SavedViewsKey="site-search" />O que é buscado é mantido no endereço da página como ?q=, então um link ou recarga busca novamente, e outro MultiTableSearchBox lugar do site envia visitantes para a página — a busca segue o endereço quando muda sob ele. SearchParameterName nomeia outro parâmetro, ou null o mantém fora do endereço.
IMultiTableQueryService.LoadPagesAsync (loadMultiTablePagesAsync no React ) retorna uma página de cada tabela em ordem, não mescladas, cada uma com o cookie de paginação para ler sua próxima página. MultiTablePageMerger As funde e diz quais tabelas ler para mais informações.
Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
ActiveOnly | bool | False | Se apenas as linhas ativas aparecem inicialmente: aquelas cujo status é 0, das tabelas que têm um. |
AllowLayoutChange | bool | True | Se o usuário pode escolher o layout. |
AllowSavedViews | bool | False | Permite que usuários logados mudem o que cada tabela mostra, salvem as próprias visualizações — as tabelas, o que Cada um mostra e é buscado por, e o layout — oferecido no seletor de visualização ao lado da página, e escolher a visualização padrão deles e esconder as visualizações que não usar. Desligado por padrão. Precisa do poder as tabelas multi-tabela da solução Portals Pro Core; um usuário interno também precisa da |
DefaultTables | IEnumerable<string>? | As tabelas foram pesquisadas inicialmente; o usuário pode ativar as outras. Desajustar, todas as tabelas. | |
DefaultViewId | Guid? | A visualização mostrada inicialmente: uma registrada para busca, por id. Desdefinido, cada tabela — ou a visualização padrão do usuário. | |
Descending | bool | False | Se as fileiras vão do último ao primeiro no início. |
GroupByTable | bool | False | Se as linhas aparecem por tabela no início, cada tabela está sob seu nome e tem mais do seu próprio para mostrar. |
ItemTemplate | RenderFragment<MultiTablePageItem>? | Uma linha desenhada do jeito da página, no lugar do layout. | |
Layout | MultiTableSearchLayout | Cards | Como as fileiras são organizadas no começo. |
MineOnly | bool | False | Se apenas as linhas do usuário logado aparecem inicialmente: essa segurança da tabela os registra como Proprietário ( |
ModifiedWithinDays | int? | Apenas as fileiras mudadas em tantos dias aparecem inicialmente: de 1 a 3.650. Desajustadas, sempre que foram alteradas. | |
OrderBy | MultiTablePageOrder | BestMatch | O que as linhas são ordenadas no início: o melhor combina primeiro, a menos que seja definido ( MultiTablePageOrder.BestMatch). Uma coluna pela qual as linhas são ordenadas que não é a O título aparece primeiro entre as colunas da linha. |
PageSize | int | 25 | Quantas linhas aparecem ao mesmo tempo, e são lidas de uma tabela por vez: de 1 a 100. |
PageSizes | IReadOnlyList<int> | O número de linhas por vez que o menu de Configurações oferece, cada uma de 1 a 100, com MultiTableSearch.PageSize entre eles. Padrão 10, 25, 50 e 100; nenhum oferece escolha. | |
RecordUrl | Func<MultiTablePageItem, string>? | Onde o nome de uma linha faz link, em vez da página do registro registrada em null sem link. | |
Regarding | TableRecordReference? | Apenas as linhas sobre esse registro, através da coluna de cada tabela sobre o registro. | |
SavedViewsKey | string? | Nomeia essa busca entre as buscas, então as visualizações salvas nela e o padrão do usuário e Visões ocultas são suas. Sem uma, ela compartilha suas visualizações com toda busca que não tem nenhuma. Letras, dígitos, | |
Search | string? | O que procurar. Sem nada, a busca não mostra nada até o usuário digitar. | |
SearchParameterName | string? | q | O parâmetro de consulta do endereço da página onde a busca é mantida, então um link ou uma recarga busca Novamente: null Mantém fora do endereço. |
ShowRecent | bool | True | Se a busca mantém as buscas do usuário e os registros que eles abrem dela, e oferece essas pesquisas enquanto nada é digitado: no navegador deles, para cada usuário exceto, compartilhado com um MultiTableSearchBox. Padrão true. |
ShowRecordLinks | bool | True | Se o nome de uma linha faz link para a página do registro, registrado no MultiTableSearch.RecordUrl é MultiTableSearch.OnSelect dado. Padrão true; uma tabela sem página não mostra link. |
ShowTotals | bool | False | Se o nome de cada tabela mostra quantas de suas linhas correspondem no total, contado com sua primeira página — Uma consulta a cada tabela — em vez de quantas já foram lidas até agora. |
SignInUrl | string | Account/Login | Quando um usuário que não está logado é enviado para fazer login, pelo menu das visualizações salvas, que pergunta eles para primeiro; eles retornam a esta página. Padrão para |
Tables | IEnumerable<string>? | As tabelas que a busca pode ler, por nome lógico. Sem definir, todas as tabelas registradas para busca. | |
Title | string? | O título mostrado onde não há vista para escolher. |
ActiveOnlyAllowLayoutChangeAllowSavedViewsDefaultTablesDefaultViewIdDescendingGroupByTableItemTemplateLayoutMineOnlyModifiedWithinDaysOrderByMultiTablePageOrder.BestMatch). Uma coluna pela qual as linhas são ordenadas que não é a O título aparece primeiro entre as colunas da linha.PageSizePageSizesMultiTableSearch.PageSize entre eles. Padrão 10, 25, 50 e 100; nenhum oferece escolha.RecordUrlnull sem link.RegardingSavedViewsKeySearchSearchParameterNamenull Mantém fora do endereço.ShowRecentMultiTableSearchBox. Padrão true.ShowRecordLinksMultiTableSearch.RecordUrl é MultiTableSearch.OnSelect dado. Padrão true; uma tabela sem página não mostra link.ShowTotalsSignInUrlTablesTitleNome | Tipo | Descrição |
|---|---|---|
LayoutChanged | EventCallback<MultiTableSearchLayout> | Aumenta quando o usuário escolhe outro layout. |
OnSelect | EventCallback<MultiTablePageItem> | Aumentado quando o usuário escolhe uma linha que não tem link de MultiTableSearch.RecordUrl's. Uma página que Gerencia as Escolhas é vinculada a páginas de Nenhum Registro. |
SearchChanged | EventCallback<string> | É aumentado à medida que o usuário altera o que é buscado. |
LayoutChangedOnSelectMultiTableSearch.RecordUrl's. Uma página que Gerencia as Escolhas é vinculada a páginas de Nenhum Registro.SearchChangedNome | Tipo | Padrão | Descrição |
|---|---|---|---|
Collapsible | bool | False | Se a caixa aparece como um botão de busca em uma tela estreita (640 pixels ou menos) até o usuário Abre o coletor, pois um cabeçalho com pouco espaço o tem. Ele se dobra novamente assim que o usuário o deixa vazio. |
KeyboardShortcut | bool | True | Seja Ctrl+K (⌘K em um Mac) em qualquer lugar da página, e / onde nada está sendo digitado, traga o Caixa e coloque o cursor nela. Padrão true; uma página com duas caixas sai Em uma. |
MaximumResults | int | 6 | Quantas carreiras são sugeridas: 1 a 25, 6 a menos que esteja definida. |
Placeholder | string? | A dica mostrada na caixa vazia, e seu nome para um leitor de tela. 'Buscar' a menos que esteja ativado. | |
RecordUrl | Func<MultiTablePageItem, string>? | Onde uma linha faz link, em vez da página do registro registrada com null sem link. | |
SearchPageUrl* | string | A página que mostra um MultiTableSearch, que 'Ver todos os resultados' e uma busca recente Vá para com o que buscar em MultiTableSearchBox.SearchParameterName: em relação à base do app, como um link é. | |
SearchParameterName | string | q | O parâmetro de consulta da página de busca em que a busca é dado: MultiTableSearch.SearchParameterName's. |
ShowRecent | bool | True | Se a caixa oferece as buscas recentes do usuário e os registros que ele abriu enquanto nada é digitado, e os mantém enquanto buscam: no navegador, para cada usuário separado. Padrão true. |
ShowRecordLinks | bool | True | Se uma linha faz link para a página do seu registro, registrada no MultiTableSearchBox.RecordUrl nem MultiTableSearchBox.OnSelect é dado. Padrão true. |
Tables | IEnumerable<string>? | As tabelas buscadas, por nome lógico. Sem definição, todas as tabelas registradas para busca. | |
Width | string? | A largura da caixa, como CSS: |
CollapsibleKeyboardShortcuttrue; uma página com duas caixas sai Em uma.MaximumResultsPlaceholderRecordUrlnull sem link.SearchPageUrl*MultiTableSearch, que 'Ver todos os resultados' e uma busca recente Vá para com o que buscar em MultiTableSearchBox.SearchParameterName: em relação à base do app, como um link é.SearchParameterNameMultiTableSearch.SearchParameterName's.ShowRecenttrue.ShowRecordLinksMultiTableSearchBox.RecordUrl nem MultiTableSearchBox.OnSelect é dado. Padrão true.TablesWidthNome | Tipo | Descrição |
|---|---|---|
OnSelect | EventCallback<MultiTablePageItem> | Aumentado quando o usuário escolhe uma linha que não tem link de MultiTableSearchBox.RecordUrl's. Uma página que Gerencia as Escolhas é vinculada a páginas de Nenhum Registro. |
OnSelectMultiTableSearchBox.RecordUrl's. Uma página que Gerencia as Escolhas é vinculada a páginas de Nenhum Registro.