MultiTableSearch es la búsqueda global de un portal: busca en varias tablas a la vez y lista lo que encuentra por nombre — como tarjetas, una lista o una cuadrícula — cada fila con su tabla, su nombre y las columnas que muestra la vista de su tabla, y lo que la búsqueda coincidió resaltado. Cada tabla se lee con la seguridad de una cuadrija, página a página, por lo que una tabla se lee más adelante solo cuando las filas mostradas la necesitan.
<MultiTableSearch /><MultiTableSearch />Escribe un nombre, una dirección de correo electrónico o una ciudad: las cuentas, contactos y oportunidades de la demo se buscan juntos, y cada nombre abre la página de su registro. Elige una configuración, ordena las filas por nombre o por cuándo se cambiaron por última vez, o agrúpalas por tabla desde Configuración y activa o desactiva las tablas desde el Filtro, que indica cuántas filas de cada tabla se encontraron. Inicia sesión, cambia lo que muestra cada tabla y guarda las vistas propias.
MultiTableSearchBox es un cuadro de búsqueda para el encabezado de una página. Mientras escribes, sugiere las primeras filas que coinciden, cada una con su tabla, y elegir una abre la página de su registro; Ver todos los resultados, primero en la lista, abre la página con la MultiTableSearch — aquí, la búsqueda de arriba. Sin nada escrito, muestra tus búsquedas recientes y los registros que has abierto. Las flechas se mueven por las sugerencias, Enter elige una y Escape las cierra.
<MultiTableSearchBox searchPageUrl="search" onNavigate={navigate} /><MultiTableSearchBox SearchPageUrl="search" />SearchPageUrl (searchPageUrl) es la página con el MultiTableSearch, dado qué buscar como ?q=. Tables limita las tablas buscadas, MaximumResults cuántas filas se sugieren (6 salvo que se defina), y RecordUrl, OnSelect y ShowRecordLinks abre una fila como hacen los MultiTableSearch'. En React, dale un onNavigate para que sus páginas se abran a través de tu router.
Ctrl+K (⌘K en un Mac) en cualquier parte de la página, y / donde no se escribe nada, se coloca el cursor en el cuadro; KeyboardShortcut (keyboardShortcut) lo apaga, como hace una página con dos cuadros para uno. Con Collapsible (collapsible), una pantalla estrecha muestra el cuadro como botón de búsqueda hasta que se abre, y se vuelve a plegar una vez que queda vacío.
<MultiTableSearchBox searchPageUrl="search" collapsible keyboardShortcut onNavigate={navigate} /><MultiTableSearchBox SearchPageUrl="search" Collapsible="true" KeyboardShortcut="true" />Registra las tablas para buscar, pon a MultiTableSearch en una página propia y la caja en la cabecera del diseño que apunta hacia ella. Cada fila abre entonces la página de su registro. Las plantillas de proyectos vienen configuradas así, para cuentas y contactos.
// Las tablas buscaron y las páginas se abren sus filas.
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}");
// La página de búsqueda.
{ path: 'search', element: <MultiTableSearch allowSavedViews showTotals onNavigate={navigate} /> }
// En la cabecera del diseño.
<MultiTableSearchBox searchPageUrl="search" collapsible onNavigate={navigate} style={{ width: 'min(320px, 40vw)' }} />@* La página de búsqueda. *@
@attribute [Route("search")]
<MultiTableSearch AllowSavedViews="true" ShowTotals="true" />
@* En la cabecera del diseño. *@
<MultiTableSearchBox SearchPageUrl="search" Width="min(320px, 40vw)" Collapsible="true" />Una búsqueda solo lee las tablas registradas para ella, con ForSearch. Una tabla registrada solo para búsquedas se mantiene fuera de líneas de tiempo, calendarios y mapas, y no necesita fecha; registrar una tabla de nuevo añade a los controles para los que es. Las notas y actividades se registran por defecto para líneas de tiempo y calendarios: para buscar solo una, elimínala antes RemoveMultiTableSource de registrarla de nuevo.
builder.Services.AddMultiTableSource("account", t => t.ForSearch());
builder.Services.AddMultiTableSource("contact", t => t.ForSearch());
// También correos electrónicos en búsquedas, así como en líneas de tiempo y calendarios.
builder.Services.AddMultiTableSource("email", t => t.ForSearch());
Sin una vista propia, una tabla se lee a través de su vista de búsqueda rápida: sus filas tituladas por el nombre principal de la tabla, mostrando las columnas de la vista, y se busca en sus columnas de hallazgo — tal y como la propia búsqueda de Dynamics la lee.
Una vista registrada para la búsqueda dice, tabla por tabla, qué filas se buscan y cómo se muestran. El FetchXML de cada tabla lleva todo el material.
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 fila se nombra por el título de su tabla — su nombre principal a menos que el registro establezca Title. La primera <order> de la consulta es el orden de las filas, y aparece primero entre sus columnas donde no es el título; su <attribute>s son las columnas que muestran, entre ellas la de una tabla unida; su filtro de búsqueda rápida (isquickfindfields="1") nombra las columnas en las que se busca una búsqueda; y sus otros filtros eligen las filas. Una tabla sin consulta se lee a través de su vista de búsqueda rápida, en orden de su título.
Las filas de varias tablas se listan en un solo orden, por lo que cada tabla debe ordenarse por una columna del mismo tipo — texto, un número o una fecha. Una tabla ordenada por una columna de otro tipo distinto a la de la primera tabla queda fuera de la búsqueda y se reporta, y el resto se muestra.
OrderBy (orderBy) ordena las filas de cada tabla de la misma manera, lo que diga su vista: por su título, por cuándo se cambió la fila por última vez (ModifiedOn) o por cuándo se creó (CreatedOn); View mantiene el orden propio de cada vista. En cualquier caso, las filas mantienen sus nombres, y una fecha por la que están ordenadas aparece primero entre sus columnas. El usuario elige el orden desde Configuración, y una vista guardada lo conserva.
<MultiTableSearch orderBy={MultiTablePageOrder.ModifiedOn} descending /><MultiTableSearch OrderBy="MultiTablePageOrder.ModifiedOn" Descending="true" />BestMatch, el valor predeterminado, pone primero las filas cuyo título coincide con la búsqueda, por título — ascendente, un título exacto antes de los largos que comienza — y luego cada fila que coincida, por título. La clasificación se mantiene en tablas y páginas: ninguna otra fila aparece mientras que ninguna tabla tenga un título que coincida por leer. Configura View para mantener el orden propio de cada vista.
<MultiTableSearch orderBy={MultiTablePageOrder.View} /><MultiTableSearch OrderBy="MultiTablePageOrder.View" /><MultiTableSearch defaultViewId={customersViewId} /><MultiTableSearch DefaultViewId="customersViewId" />Una búsqueda funciona como la de una cuadrícula: una fila coincide cuando una columna de búsqueda comienza con lo que se escribió, o lo contiene después de un inicio *, ignorando mayúsculas y acentos. Las búsquedas coinciden por su nombre, las elecciones por su etiqueta, y las columnas numéricas y de fecha por >, <, >= o <= antes de un número, un día o un año.
Cada fila muestra cuál de sus columnas coincidió, resaltando lo que se ha escrito; una columna de búsqueda que coincidió pero no aparece aparece debajo de las demás, por lo que no se encuentra ninguna fila sin una razón. Sin nada tecleando, la búsqueda no muestra nada.
El filtro lista cada tabla con cuántas filas se encontraron, al igual que los encabezados de las filas agrupadas por tabla: una tabla con más por leer de lo que ha mostrado lo dice — Cuentas (25+) — y su recuento crece a medida que se leen más.
Con () cada tabla se nombra con cada fila que coincide — Cuentas (1.254) — contada cuando se lee la primera página: una consulta más por tabla, ejecutada con el acceso propio del usuario y dividida más allá del límite de Dataverse de 50.000 filas que se lee agregadamente.showTotalsShowTotals
<MultiTableSearch showTotals /><MultiTableSearch ShowTotals="true" />Las flechas se mueven desde el cuadro de búsqueda hacia las filas y entre ellas, y Inicio y Fin van al primero y al último; Hacia arriba desde el primero vuelve al cuadro.
Un lector de pantalla escucha cuántas filas se han encontrado una vez que una búsqueda las ha leído, y que hay más que cargar.
El filtro ofrece tres filtros de cada tabla a la vez: Mis registros, Registros activos y cuándo se cambiaron las filas por última vez — en los últimos 7 o 30 días, o el último año. MineOnly , ActiveOnly y ModifiedWithinDays (mineOnly, activeOnly, modifiedWithinDays) los configura a medida que se abre la búsqueda, y una vista guardada los conserva.
<MultiTableSearch activeOnly modifiedWithinDays={30} /><MultiTableSearch ActiveOnly="true" ModifiedWithinDays="30" />Los registros de un usuario son aquellas tablas que los registros de seguridad lo consideran propietarios: las columnas de contacto y RowsOwnedByContact OwnedBy las reglas establecidas cuando se crea una fila, incluidas las listas de grupos. My Records se ofrece a los usuarios que han iniciado sesión, y una tabla que no registra ningún propietario para ellos no se busca mientras está activada — la búsqueda lo nombra. Los registros activos son aquellos cuyo estado es 0, de las tablas que tienen uno.
La búsqueda conserva lo que el usuario buscó y los registros que abrió de ella, y sin nada escrito los ofrece de nuevo, con una forma de borrarlos. Se mantienen en el navegador del usuario, cada usuario por separado, y compartidos con un MultiTableSearchBox. ShowRecent (showRecent) los apaga.
Regarding (regarding) busca solo las filas de un registro, a través de cada tabla respecto a la columna: notas' objectid, actividades' regardingobjectid (con las actividades en las que participa el registro), y para otras tablas la columna sus nombres de registro con 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" />Una tabla sin esa columna no tiene nada sobre el registro para buscar, así que se omite y se nombra encima de los resultados.
Las notas ya están registradas para las líneas de tiempo. Regístralas también para la búsqueda, nombrando las columnas en las que se consulta la búsqueda, ya que las notas no tienen vista de Búsqueda Rápida — su nombre de archivo está entre ellas, y una búsqueda encuentra archivos adjuntos por nombre:
builder.Services.AddMultiTableSource("annotation", t => t
.SearchColumns("subject", "notetext", "filename")
.ForSearch());
La fila de una nota se titula por su sujeto. Solo se leen las notas destinadas al portal, como en todas partes: aquellas cuyo texto comienza por *WEB*. En la página de un registro, una búsqueda encuentra las notas sobre él.
Layout elige cartas, una lista o una cuadrícula, que el usuario puede cambiar desde la barra de herramientas a menos que AllowLayoutChange esté desactivada. GroupByTable Muestra las filas de cada tabla bajo su nombre con un Mostrar más de las suyas propias, y Descending lista las filas de última a primera. PageSize es cuántas filas se muestran a la vez, y los usuarios eligen otra de Configuración entre PageSizes (pageSizes): 10, 25, 50 y 100 a menos que esté activada, una lista vacía no ofrece elección. Una vista guardada mantiene la elegida.
<MultiTableSearch layout={MultiTableSearchLayout.List} groupByTable pageSize={10} /><MultiTableSearch Layout="MultiTableSearchLayout.List" GroupByTable="true" PageSize="10" />ItemTemplate (renderItem en React) dibuja una fila hacia la página propia.
El nombre de una fila enlaza con la página de su registro, registrada en AddRecordPage (véase Páginas de registro), donde su tabla tiene una. RecordUrl (recordUrl) hace que enlace a otro sitio; OnSelect (onSelect) hace que la página gestione la selección en su lugar, ya que una fila RecordUrl no da enlace; y ShowRecordLinks (showRecordLinks) desactiva los enlaces de las páginas de registro.
<MultiTableSearch recordUrl={(item) => `/${item.table}/${item.id}`} /><MultiTableSearch RecordUrl="@(item => $"/{item.Table}/{item.Id}")" />En React, se le asigna a la búsqueda un onNavigate, como en navigateReact Router , y un clic en un enlace pasa por tu router; sin uno es un enlace ordinario.
Con AllowSavedViews, los usuarios iniciados sesión guardan las tablas que se muestran, qué muestra cada una y cómo se distribuye la búsqueda como vistas propias, ofrecidas junto a las de la página, y eligen sus vistas predeterminadas y ocultas. Se mantienen como vistas de varias tablas que nombran búsquedas, por lo que las vistas guardadas en líneas de tiempo y calendarios no se ofrecen aquí, ni estas allá. SavedViewsKey Mantiene las vistas de una búsqueda para sí misma.
Los filtros de Editar de Filter abren la consulta de cada tabla como una pestaña: la columna por la que están ordenadas sus filas, las columnas que muestran, las columnas que busca una búsqueda y las filas que lee.
Desde las vistas de Gestionar, un usuario puede asignar títulos propios a las columnas de una vista de sus vistas, ya que las columnas de una cuadrícula pueden retitularse.
<MultiTableSearch allowSavedViews savedViewsKey="site-search" /><MultiTableSearch AllowSavedViews="true" SavedViewsKey="site-search" />Lo que se busca se mantiene en la dirección de la página como ?q=, por lo que un enlace o una recarga vuelve a buscar, y en MultiTableSearchBox otra parte del sitio se envía visitantes a la página — la búsqueda sigue la dirección cuando cambia bajo ella. SearchParameterName nombra otro parámetro, o null lo mantiene fuera de la dirección.
IMultiTableQueryService.LoadPagesAsync (loadMultiTablePagesAsync en React) devuelve una página de cada tabla en orden, no fusionada, cada una con la cookie de paginación para leer su siguiente página. MultiTablePageMerger Las fusiona y dice qué tablas leer para más información.
Nombre | Tipo | Default | Descripción |
|---|---|---|---|
ActiveOnly | bool | False | Si solo aparecen las filas activas al principio: aquellas cuyo estatus es 0, de las tablas que tienen uno. |
AllowLayoutChange | bool | True | Si el usuario puede elegir el diseño. |
AllowSavedViews | bool | False | Permita a los usuarios iniciados sesión cambiar lo que muestra cada tabla, guardar vistas propias — las tablas, qué cada uno muestra y se busca por, y el diseño — ofrecido en el selector de vistas junto a la página, y elige su vista por defecto y oculta las vistas que no usan. Apagado por defecto. Necesita el poder las tablas de vista múltiple de la solución Portals Pro Core; un usuario interno también necesita la |
DefaultTables | IEnumerable<string>? | Las tablas buscadas al principio; el usuario puede activar las demás. Desconfigurado, cada mesa. | |
DefaultViewId | Guid? | La vista mostrada al principio: una registrada para búsqueda, por id. Desconfigurada, cada tabla — o la vista predeterminada del usuario. | |
Descending | bool | False | Si las filas van de la última a la primera al principio. |
GroupByTable | bool | False | Ya sea que las filas se muestren por mesa al principio, cada mesa está bajo su nombre y muestra más de lo suyo. |
ItemTemplate | RenderFragment<MultiTablePageItem>? | Una fila dibujada a la manera de la página, en lugar del diseño. | |
Layout | MultiTableSearchLayout | Cards | Cómo se disponen las filas al principio. |
MineOnly | bool | False | Si solo aparecen las filas propias del usuario iniciado sesión al principio: esa seguridad de la tabla los registra como propietario ( |
ModifiedWithinDays | int? | Solo las filas cambiadas en estos días aparecen al principio: de 1 a 3.650. Sin colocar, cuando se cambiaban. | |
OrderBy | MultiTablePageOrder | BestMatch | Lo que ordenan las filas al principio: la mejor empareja primero salvo que se establezca ( MultiTablePageOrder.BestMatch). Una columna por la que se ordenan las filas que no es la el título aparece primero entre las columnas de una fila. |
PageSize | int | 25 | Cuántas filas aparecen a la vez y se leen de una tabla a la vez: de 1 a 100. |
PageSizes | IReadOnlyList<int> | El número de filas a la vez que ofrece el menú de Ajustes, cada una del 1 al 100, con MultiTableSearch.PageSize entre ellos. Por defecto 10, 25, 50 y 100; ninguno ofrece elección. | |
RecordUrl | Func<MultiTablePageItem, string>? | Donde el nombre de una fila enlaza, en lugar de la página de su registro registrada con null sin enlace. | |
Regarding | TableRecordReference? | Solo las filas sobre este registro, a través de la columna de referencia de cada tabla. | |
SavedViewsKey | string? | Nombra esta búsqueda entre las búsquedas, así que las vistas guardadas en ella y la predeterminada del usuario y Las vistas ocultas son propias. Sin una, comparte sus opiniones con todas las búsquedas que no tienen ninguna. Letras, dígitos, | |
Search | string? | Qué buscar. Sin nada, la búsqueda no muestra nada hasta que el usuario escribe. | |
SearchParameterName | string? | q | El parámetro de consulta de la dirección de la página donde se mantiene la búsqueda, así que un enlace o una recarga buscan De nuevo: null Lo mantiene fuera de la dirección. |
ShowRecent | bool | True | Si la búsqueda conserva las búsquedas del usuario y los registros que abren de ella, y se los ofrece mientras que no se escribe nada: en su navegador, para cada usuario aparte, compartido con un MultiTableSearchBox. Default true. |
ShowRecordLinks | bool | True | Si el nombre de una fila enlaza con la página de su registro, registrado en MultiTableSearch.RecordUrl se da ni MultiTableSearch.OnSelect se da. Default true; una tabla sin página no muestra enlace. |
ShowTotals | bool | False | Si el nombre de cada tabla muestra cuántas de sus filas coinciden en total, contado con su primera página — Una consulta de cada tabla más — en lugar de cuántas se han leído hasta ahora. |
SignInUrl | string | Account/Login | Cuando un usuario que no está conectado es enviado a iniciar sesión, desde el menú de vistas guardadas, que pide Ellos a primero; vuelven a esta página. Por defecto se asigna |
Tables | IEnumerable<string>? | Las tablas que la búsqueda puede leer, por nombre lógico. Unset, cada tabla registrada para búsqueda. | |
Title | string? | El encabezado mostrado donde no hay vista para elegir. |
ActiveOnlyAllowLayoutChangeAllowSavedViewsDefaultTablesDefaultViewIdDescendingGroupByTableItemTemplateLayoutMineOnlyModifiedWithinDaysOrderByMultiTablePageOrder.BestMatch). Una columna por la que se ordenan las filas que no es la el título aparece primero entre las columnas de una fila.PageSizePageSizesMultiTableSearch.PageSize entre ellos. Por defecto 10, 25, 50 y 100; ninguno ofrece elección.RecordUrlnull sin enlace.RegardingSavedViewsKeySearchSearchParameterNamenull Lo mantiene fuera de la dirección.ShowRecentMultiTableSearchBox. Default true.ShowRecordLinksMultiTableSearch.RecordUrl se da ni MultiTableSearch.OnSelect se da. Default true; una tabla sin página no muestra enlace.ShowTotalsSignInUrlTablesTitleNombre | Tipo | Descripción |
|---|---|---|
LayoutChanged | EventCallback<MultiTableSearchLayout> | Se eleva cuando el usuario elige otro diseño. |
OnSelect | EventCallback<MultiTablePageItem> | Se eleva cuando el usuario elige una fila que no tiene enlace de MultiTableSearch.RecordUrl's. Una página que gestiona las selecciones enlazadas a ninguna página de registro. |
SearchChanged | EventCallback<string> | Se eleva a medida que el usuario cambia lo que se busca. |
LayoutChangedOnSelectMultiTableSearch.RecordUrl's. Una página que gestiona las selecciones enlazadas a ninguna página de registro.SearchChangedNombre | Tipo | Default | Descripción |
|---|---|---|---|
Collapsible | bool | False | Si la caja aparece como un botón de búsqueda en una pantalla estrecha (640 píxeles o menos) hasta que el usuario La abre, ya que un encabezado con poco espacio lo tiene. Se vuelve a plegar una vez que el usuario lo deja vacío. |
KeyboardShortcut | bool | True | Ya sea Ctrl+K (⌘K en un Mac) en cualquier parte de la página, o / donde no se esté escribiendo nada, lleva el Caja y coloca el cursor en ella. Por defecto true; una página con dos cuadros deja En uno. |
MaximumResults | int | 6 | Cuántas filas se sugieren: de 1 a 25, 6 a menos que esté establecida. |
Placeholder | string? | La pista mostrada en la caja vacía y su nombre para un lector de pantalla. 'Buscar' a menos que se active. | |
RecordUrl | Func<MultiTablePageItem, string>? | Donde una fila enlaza en lugar de la página de su registro registrada con null Sin enlace. | |
SearchPageUrl* | string | La página que muestra un MultiTableSearch, que 'Ver todos los resultados' y una búsqueda reciente Ve a con qué buscar en MultiTableSearchBox.SearchParameterName: En relación con la base de la app, Como es un enlace. | |
SearchParameterName | string | q | El parámetro de consulta de la página de búsqueda en el que se indica la búsqueda: MultiTableSearch.SearchParameterName's. |
ShowRecent | bool | True | Si la caja ofrece las búsquedas recientes del usuario y los registros que abrió cuando no lo es Escribió, y los mantiene mientras buscan: en su navegador, para cada usuario aparte. Predeterminado true. |
ShowRecordLinks | bool | True | Si una fila enlaza a la página de su registro, registrada en MultiTableSearchBox.RecordUrl ni MultiTableSearchBox.OnSelect se da. Default true. |
Tables | IEnumerable<string>? | Las tablas buscadas, por nombre lógico. Sin colocar, todas las tablas registradas para búsqueda. | |
Width | string? | El ancho de la caja, como CSS: |
CollapsibleKeyboardShortcuttrue; una página con dos cuadros deja En uno.MaximumResultsPlaceholderRecordUrlnull Sin enlace.SearchPageUrl*MultiTableSearch, que 'Ver todos los resultados' y una búsqueda reciente Ve a con qué buscar en MultiTableSearchBox.SearchParameterName: En relación con la base de la app, Como es un enlace.SearchParameterNameMultiTableSearch.SearchParameterName's.ShowRecenttrue.ShowRecordLinksMultiTableSearchBox.RecordUrl ni MultiTableSearchBox.OnSelect se da. Default true.TablesWidthNombre | Tipo | Descripción |
|---|---|---|
OnSelect | EventCallback<MultiTablePageItem> | Se eleva cuando el usuario elige una fila que no tiene enlace de MultiTableSearchBox.RecordUrl's. Una página que gestiona las selecciones enlazadas a ninguna página de registro. |
OnSelectMultiTableSearchBox.RecordUrl's. Una página que gestiona las selecciones enlazadas a ninguna página de registro.