MultiTableSearch ポータルのグローバルサーチです。複数のテーブルを同時に検索し、カード、リスト、グリッドなど名前で見つけたものを一覧化し、各行にテーブル名、テーブル名、テーブルのビューに表示される列、検索が一致したものをハイライトします。すべてのテーブルはグリッドのセキュリティでページごとに読み込まれるため、表示された行が必要な場合にのみさらに読み進められます。
<MultiTableSearch /><MultiTableSearch />名前、メールアドレス、または都市名を入力すると、デモのアカウント、連絡先、機会が一緒に検索され、それぞれの名前がレコードページを開きます。レイアウトを選び、行を名前や最後に変更した日順に並べ替え、設定からテーブルごとにグループ化し、各テーブルの行が何行見つかったかを表示するフィルターからテーブルのオン・オフを切り替えます。サインインしたら、各テーブルの表示内容を変更し、自分のビューを保存してください。
MultiTableSearchBox はページのヘッダーの検索ボックスです。入力すると、一致する最初の行を提案し、それぞれにテーブルがあり、選ぶとそのレコードのページが開きます。リストの最初の「 すべての結果を見る」は、 MultiTableSearch ページを開きます — こちら、上の検索です。何も入力していない状態で、最近の検索履歴と開いたレコードが表示されます。矢印キーは提案を移動し、Enterで1つ選び、Escapeで閉じます。
<MultiTableSearchBox searchPageUrl="search" onNavigate={navigate} /><MultiTableSearchBox SearchPageUrl="search" />SearchPageUrl(searchPageUrl)はMultiTableSearchが記載されたページで、検索すべき?q=が定められています。Tables検索するテーブルMaximumResults数、提案される行数(設定されていない限り6行)、RecordUrl、OnSelect、ShowRecordLinksMultiTableSearchのように行を開く制限があります。Reactでは、ルーター経由でページを開くonNavigateを設定してください。
Ctrl+K(Macでは⌘K)をページのどこにでも押し、何も入力されていない / はカーソルをボックスに入れます。 KeyboardShortcut (keyboardShortcut)はこれをオフにします。これは2つのボックスがあるページが1つにオフになるように。 Collapsible (collapsible)では、狭い画面でボックスが検索ボタンとして表示され、開くと再び閉じられます。
<MultiTableSearchBox searchPageUrl="search" collapsible keyboardShortcut onNavigate={navigate} /><MultiTableSearchBox SearchPageUrl="search" Collapsible="true" KeyboardShortcut="true" />テーブルを登録して検索し、 MultiTableSearch を独立したページに置き、レイアウトのヘッダーのボックスをそのページに向けさせます。各行がそのレコードのページを開きます。プロジェクトテンプレートはこのように設定されており、アカウントや連絡先用に使われます。
// テーブルは探し、ページは列を開いた。
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}");
// 検索ページ。
{ path: 'search', element: <MultiTableSearch allowSavedViews showTotals onNavigate={navigate} /> }
// レイアウトのヘッダーに。
<MultiTableSearchBox searchPageUrl="search" collapsible onNavigate={navigate} style={{ width: 'min(320px, 40vw)' }} />@* 検索ページ。 *@
@attribute [Route("search")]
<MultiTableSearch AllowSavedViews="true" ShowTotals="true" />
@* レイアウトのヘッダーに。 *@
<MultiTableSearchBox SearchPageUrl="search" Width="min(320px, 40vw)" Collapsible="true" />検索は、そのテーブルに登録されたテーブルのみを読み込み、 ForSearchを読みます。検索のみで登録されたテーブルは、タイムライン、カレンダー、地図には含まれず、日付も必要ありません。テーブルを再度登録すると、その管理が強化されます。ノートやアクティビティはデフォルトでタイムラインとカレンダーごとに登録されます。単独で検索する場合は、 RemoveMultiTableSource で削除してから再度登録します。
builder.Services.AddMultiTableSource("account", t => t.ForSearch());
builder.Services.AddMultiTableSource("contact", t => t.ForSearch());
// 検索時のメールやタイムライン、カレンダーにも使われます。
builder.Services.AddMultiTableSource("email", t => t.ForSearch());
テーブルは独自のビューを持たないため、クイックファインドビューで読み取ります。テーブルの行はテーブルのプライマリ名でタイトル付けられ、ビューの列が表示され、Dynamics自身の検索がそれを読み取る「find」列で検索されます。
検索登録されたビューは、テーブルごとにどの行が検索され、どのように表示されるかを示します。各テーブルのFetchXMLがすべてを保持します。
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"));
各行はテーブルのタイトルで名前が付けられます。登録が Titleを設定しない限り、そのプライマリ名です。クエリの最初の <order> は行が順番にリストされているもので、タイトル以外の列の中で最初に表示されます。 <attribute>は表示される列で、結合したテーブルはその中に含まれます。クイック検索フィルター(isquickfindfields="1")は検索対象の列名を付け、他のフィルターは行を選択します。クエリのないテーブルは、タイトルの順にクイック検索ビューで読み込まれます。
複数のテーブルの行は一つの順序でリストされるため、すべてのテーブルは同じタイプのカラム(テキスト、数字、または日付)で並べ替えなければなりません。最初のテーブル以外のタイプのカラムで並べられたテーブルは検索から除外され報告され、それ以外は表示されます。
OrderBy (orderBy)は、ビューが何と言われても、すべてのテーブルの行を同じ方法でソートします:タイトル、最後に変更された行順(ModifiedOn)、または作成された日(CreatedOn)で。 View は各ビューの順序を保持します。いずれにせよ、行の名前は保持され、並べ替えた日付が列の先頭に表示されます。ユーザーは設定から順序を選択し、保存されたビューでその順序が保持されます。
<MultiTableSearch orderBy={MultiTablePageOrder.ModifiedOn} descending /><MultiTableSearch OrderBy="MultiTablePageOrder.ModifiedOn" Descending="true" />BestMatchデフォルトでは、検索と一致する行をタイトル順に優先し、タイトルの前に正確なタイトルが上位に並び、その後にタイトル順に一致する行をタイトル順に配置します。ランキングはテーブルやページ間で維持され、どのテーブルにもタイトルマッチが残っている間は他の行が表示されません。 View は各ビューの順序を保持するように設定してください。
<MultiTableSearch orderBy={MultiTablePageOrder.View} /><MultiTableSearch OrderBy="MultiTablePageOrder.View" /><MultiTableSearch defaultViewId={customersViewId} /><MultiTableSearch DefaultViewId="customersViewId" />検索はグリッドのように動作します。検索列が入力された内容で始まったときに行が一致するか、 *の後にその列が入り、大文字やアクセントは無視されます。検索は名前、ラベルで選択、数字や日付の >列は数字、日、年の前に番号、 <、 >= 、 <= で照合されます。
各行はどの列が一致したかを示し、入力された内容を強調します。一致したが表示されていない検索列は他の列の下にリストアップされるため、理由なく行が見つかりません。何も入力されなければ、検索は何も読みません。
フィルターは各テーブルの行数で一覧化し、テーブルごとにグループ化された行の見出しも同様です。表示した通りのテーブル( Accounts(25+) )は読み取り数が増え、その数は読み取られるほど増加します。
ShowTotals(showTotals)では、各テーブルに名前が付けられ、最初のページが読み込まれた時点で一致する行(アカウント数(1,254))がカウントされます。テーブルをもう1回クエリし、ユーザー自身のアクセスで実行し、Dataverseの50,000行の制限を超えて読み込みをまとめます。
<MultiTableSearch showTotals /><MultiTableSearch ShowTotals="true" />矢印キーは検索ボックスから行へ、またその間に移動し、HomeとEndは最初と最後の行へ移動します。最初の位置から上はボックスに戻ります。
スクリーンリーダーは、検索で読み終わった行数と、読み込むべき行が何行あるかを読み取ることができます。
フィルターはすべてのテーブルに対して同時に3つのフィルターを提供します: 私のレコード、 アクティブレコード、そして行が最後に変更された時期(過去7日、30日、または過去1年以内)。 MineOnly、 ActiveOnly 、 ModifiedWithinDays (mineOnly、 activeOnly、 modifiedWithinDays)は検索開始時に設定し、保存済みのビューで保持されます。
<MultiTableSearch activeOnly modifiedWithinDays={30} /><MultiTableSearch ActiveOnly="true" ModifiedWithinDays="30" />ユーザーのレコードは、所有しているテーブルのセキュリティ記録です。連絡先列、その RowsOwnedByContact 、行作成時に設定される OwnedBy ルール、パーティリストも含まれます。 私のレコード はサインイン済みユーザーに提供されており、所有者がいないテーブルはオン中は検索されません。検索で名前が付けられます。 アクティブレコード とは、ステータスが0のテーブルのうち、アクティブレコードを持つものを指します。
検索はユーザーが検索した内容と開いた記録を保持し、何も入力されていないと再度それらを消去する方法を提供します。それらはユーザーのブラウザに保存され、各ユーザーは別々に管理され、 MultiTableSearchBoxと共有されます。 ShowRecent (showRecent)はそれらをオフにします。
Regarding (regarding)は、各テーブルの関連列(Notesの objectid、アクティビティの regardingobjectid 、レコードが参加するアクティビティを含む)を順に、1つのレコードに関する行のみを検索し、他のテーブルについてはカラムの登録名を 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" />そのような列がないテーブルには、検索できるレコードに関する情報がないため、その記録は省略され、結果の上に名前が付けられます。
メモはすでにタイムラインに登録されています。検索用にも登録し、検索対象の列名を付けてください。メモにはクイックファインドビューがなく、ファイル名も含まれており、検索では名前で添付ファイルが見つかります。
builder.Services.AddMultiTableSource("annotation", t => t
.SearchColumns("subject", "notetext", "filename")
.ForSearch());
メモの列は主題名で付けられている。ポータル用のメモだけが読まれる。どこでもそうである。テキストが *WEB*で始まる者だけだ。記録のページでは、その記録に関するメモを検索で見つけることができる。
Layout カード、リスト、グリッドを選択し、ユーザーはツールバーから変更できます。ただし AllowLayoutChange がオフでない限り。 GroupByTable 各テーブルの名前の下に行が表示され、「自分のさらに多くの行を表示」と表示し、 Descending 行を最後から先へ並べます。 PageSize は一度に表示される行数で、ユーザーは設定から10、25、50、100の中 PageSizes から1行を選択します(pageSizes設定がなければ)、空のリストでは選択肢がありません。保存されたビューは選択した行を保持します。
<MultiTableSearch layout={MultiTableSearchLayout.List} groupByTable pageSize={10} /><MultiTableSearch Layout="MultiTableSearchLayout.List" GroupByTable="true" PageSize="10" />ItemTemplate (ReactでrenderItem )はページ独自の列を描きます。
行名はそのレコードのページにリンクし、AddRecordPageに登録されている(記録ページを参照)、そのテーブルに1ページがあります。RecordUrl(recordUrl)は他の場所へのリンクを、OnSelect(onSelect)はリンクのない行ではページがピックを処理します。RecordUrlShowRecordLinks(showRecordLinks)はレコードページのリンクをオフにします。
<MultiTableSearch recordUrl={(item) => `/${item.table}/${item.id}`} /><MultiTableSearch RecordUrl="@(item => $"/{item.Table}/{item.Id}")" />Reactでは、Reactルーターのnavigateのように検索にonNavigateを付けると、リンクをクリックするとルーターを通過します。リンクがなければ普通のリンクになります。
AllowSavedViewsでは、サインインしたユーザーは表示されたテーブル、それぞれの表示内容、検索の配置を自分のビューとして保存し、ページの横に提供し、デフォルトと非表示ビューを選択します。それらは検索名を付ける複数のテーブルのビューとして保持されるため、タイムラインやカレンダーに保存されたビューはここでも、あちらにも表示されません。SavedViewsKey検索のビューは自分だけのものに保管しています。
Filterの 編集フィルター は、各テーブルのクエリをタブとして開きます:行がソートされる列、表示される列、検索が参照する列、読み取り先の行です。
ビュー 管理から、ユーザーは自分のビューの列に自分のタイトルを割り当てることができ、グリッドの列のタイトルを変更することができます。
<MultiTableSearch allowSavedViews savedViewsKey="site-search" /><MultiTableSearch AllowSavedViews="true" SavedViewsKey="site-search" />検索対象はページのアドレスに ?q=として保持されるため、リンクやリロードで再度検索され、サイトの他の MultiTableSearchBox で訪問者がページに誘導されます。検索はアドレスが変更される際にそのページにたどり着きます。 SearchParameterName 別のパラメータを指定したり、 null アドレスから除外したりします。
IMultiTableQueryService.LoadPagesAsync (ReactではloadMultiTablePagesAsync )は各テーブルのページを順番に返し、統合せずに、次のページを読むためのページングクッキーをそれぞれに返します。 MultiTablePageMerger それらを統合し、どのテーブルを読み取るかを指示します。
名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
ActiveOnly | bool | False | 最初に表示されるのはアクティブな行だけかどうか:ステータスが0のテーブルのうち、行が0である場合。 |
AllowLayoutChange | bool | True | ユーザーがレイアウトを選べるかどうか。 |
AllowSavedViews | bool | False | サインインしたユーザーが各テーブルの表示内容を変更したり、自分のビュー(テーブルの表示)を保存したりできます それぞれが表示し、検索され、レイアウトはページの横にあるビューピッカーで提供されています。 デフォルトのビューを選び、使わないビューを非表示にする。デフォルトでオフ。パワーが必要だ Portals Pro Coreソリューションのマルチテーブルビューテーブル;内部ユーザーはまた、 |
DefaultTables | IEnumerable<string>? | 最初に検索したテーブルは、ユーザーは他のテーブルを切り替えることができます。すべてのテーブルは設定されていません。 | |
DefaultViewId | Guid? | 最初に表示されたビュー:IDで検索登録されたもの。未設定、すべてのテーブル、またはユーザーのデフォルトビュー。 | |
Descending | bool | False | 最初は列が最後の列から最初の列まで続くかどうか。 |
GroupByTable | bool | False | 最初はテーブルごとに行が表示されるかどうかは別として、各テーブルの名前の下にさらに多くのテーブルが表示されます。 |
ItemTemplate | RenderFragment<MultiTablePageItem>? | レイアウトの代わりに、ページ独自の方向に一列が描かれていた。 | |
Layout | MultiTableSearchLayout | Cards | 最初は列の配置がどうなっているか。 |
MineOnly | bool | False | 最初にサインインしているユーザー自身の行だけが表示されるかどうか:これらのテーブルのセキュリティはそれらを次のように記録します。 所有( |
ModifiedWithinDays | int? | 最初はこの日数で変わった行だけが示されます:1から3,650まで。変更された時点では未定です。 | |
OrderBy | MultiTablePageOrder | BestMatch | 行の順序は最初:設定しない限り、最良のマッチが先に並ぶ ( MultiTablePageOrder.BestMatch)。行が順番に並ぶ列は タイトルは行の列の中で最初に表示されます。 |
PageSize | int | 25 | 1回に表示され、テーブルごとに読み取られる行数は1行から100行までです。 |
PageSizes | IReadOnlyList<int> | 設定メニューが提供する1行から100行までの行数は MultiTableSearch.PageSize その中には。デフォルトは10、25、50、100;どの選択肢もない。 | |
RecordUrl | Func<MultiTablePageItem, string>? | 行名がリンク先となる場所は、その記録のページに登録された場所です。 null 。 | |
Regarding | TableRecordReference? | このレコードに関する行だけを、各テーブルの「abouting」列を通して読みます。 | |
SavedViewsKey | string? | この検索は検索の中で名前を付け、保存されたビューとユーザーのデフォルトおよび 隠されたビューは独自のものです。隠されたビューがなければ、ビューがないすべての検索とビューを共有します。 文字、数字、 | |
Search | string? | 何を検索すればいいのか。何も見つからないので、ユーザーが入力するまで何も表示されません。 | |
SearchParameterName | string? | q | ページアドレスのクエリパラメータは検索対象に保持されるため、リンクやリロード検索は 繰り返しますが、設定されていない null アドレスから除外します。 |
ShowRecent | bool | True | 検索がユーザーの検索や開いた記録を保持し、提供するかどうか 何も入力されませんが、ブラウザ上で各ユーザーごとに共有されています。 Components.MultiTableSearchBox。デフォルトの true。 |
ShowRecordLinks | bool | True | 行名が MultiTableSearch.RecordUrl も MultiTableSearch.OnSelect は与えられません。デフォルト true;ページのないテーブルにはリンクが表示されません。 |
ShowTotals | bool | False | 各テーブルの名前が、最初のページと合計で一致する行の数を示しているかどうかは — これまでに読まれたテーブル数ではなく、各テーブルのクエリを問い合わせる形です。 |
SignInUrl | string | Account/Login | サインインしていないユーザーが保存済みのビューメニューからサインインを促され、そこで求められます 彼らは最初に;このページに戻ってきます。デフォルトは |
Tables | IEnumerable<string>? | 検索対象となるテーブルは論理名で読み取ることができます。未設定のテーブルは検索登録済みのテーブルです。 | |
Title | string? | 選べない眺めの方位。 |
ActiveOnlyAllowLayoutChangeAllowSavedViewsDefaultTablesDefaultViewIdDescendingGroupByTableItemTemplateLayoutMineOnlyModifiedWithinDaysOrderByMultiTablePageOrder.BestMatch)。行が順番に並ぶ列は タイトルは行の列の中で最初に表示されます。PageSizePageSizesMultiTableSearch.PageSize その中には。デフォルトは10、25、50、100;どの選択肢もない。RecordUrlnull 。RegardingSavedViewsKeySearchSearchParameterNamenull アドレスから除外します。ShowRecentComponents.MultiTableSearchBox。デフォルトの true。ShowRecordLinksMultiTableSearch.RecordUrl も MultiTableSearch.OnSelect は与えられません。デフォルト true;ページのないテーブルにはリンクが表示されません。ShowTotalsSignInUrlTablesTitle名称 | 種類 | 概要 |
|---|---|---|
LayoutChanged | EventCallback<MultiTableSearchLayout> | ユーザーが別のレイアウトを選択すると上昇します。 |
OnSelect | EventCallback<MultiTablePageItem> | ユーザーが MultiTableSearch.RecordUrlのリンクがない行を選ぶと、そのページが上がります。ページ ピックを扱うのは記録なしページにリンクされています。 |
SearchChanged | EventCallback<string> | ユーザーが検索内容を変更すると、その設定が上がります。 |
LayoutChangedOnSelectMultiTableSearch.RecordUrlのリンクがない行を選ぶと、そのページが上がります。ページ ピックを扱うのは記録なしページにリンクされています。SearchChanged名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
Collapsible | bool | False | 狭い画面(640ピクセル以下)で検索ボタンとして表示されるかどうかは、ユーザーが見るまでは スペースの少ないヘッダーのように開きます。ユーザーが空にすると、また折りたたまれます。 |
KeyboardShortcut | bool | True | ページのどこかでCtrl+K(Macでは⌘K)を押していても、何も入力されていない場所にあっても、 箱を詰めてカーソルを入れます。デフォルト true;2つのボックスがあるページは叶います 1台に。 |
MaximumResults | int | 6 | 推奨行数:1〜25行、セット時は6列。 |
Placeholder | string? | 空のボックスに表示されるヒントと、スクリーンリーダーへのその名前。「検索」が設定されていない限り。 | |
RecordUrl | Func<MultiTablePageItem, string>? | 行がリンクする場所は、 null 。 | |
SearchPageUrl* | string | Components.MultiTableSearchが表示され、「すべての結果を見る」と最近の検索が表示されるページ MultiTableSearchBox.SearchParameterNameで検索するものはアプリのベースに対して、 リンクとして。 | |
SearchParameterName | string | q | 検索ページのクエリパラメータ MultiTableSearch.SearchParameterName |
ShowRecent | bool | True | ボックスがユーザーの最近の検索や開いた記録を提供しているのに、何も表示されていないかどうか 入力し、検索中にブラウザ内で各ユーザーごとに保持します。デフォルト true。 |
ShowRecordLinks | bool | True | 行が MultiTableSearchBox.RecordUrl も、 MultiTableSearchBox.OnSelect も与えられていません。デフォルトの trueです。 |
Tables | IEnumerable<string>? | テーブルは論理名で検索されました。セット解除されたすべてのテーブルは検索登録されました。 | |
Width | string? | CSSのボックス幅は設定されない限り |
CollapsibleKeyboardShortcuttrue;2つのボックスがあるページは叶います 1台に。MaximumResultsPlaceholderRecordUrlnull 。SearchPageUrl*Components.MultiTableSearchが表示され、「すべての結果を見る」と最近の検索が表示されるページ MultiTableSearchBox.SearchParameterNameで検索するものはアプリのベースに対して、 リンクとして。SearchParameterNameMultiTableSearch.SearchParameterNameShowRecenttrue。ShowRecordLinksMultiTableSearchBox.RecordUrl も、 MultiTableSearchBox.OnSelect も与えられていません。デフォルトの trueです。TablesWidth名称 | 種類 | 概要 |
|---|---|---|
OnSelect | EventCallback<MultiTablePageItem> | ユーザーが MultiTableSearchBox.RecordUrlのリンクがない行を選ぶと、そのページが上がります。ページ ピックを扱うのは記録なしページにリンクされています。 |
OnSelectMultiTableSearchBox.RecordUrlのリンクがない行を選ぶと、そのページが上がります。ページ ピックを扱うのは記録なしページにリンクされています。