IViewメタデータキャッシュ
IViewMetadataCacheサービスはDataverseビュー(保存されたクエリ)メタデータへのキャッシュアクセスを提供します。ビューは初回アクセス時にDataverseから取得され、その後のリクエストのためにキャッシュされます。
IDによるビューの取得
ビューのGUIDと GetAsync を組み合わせて、単一のビューのメタデータ(FetchXMLクエリ、列、表示設定など)を取得します。
// useViewMetadataはDataverseに保存されたビューのメタデータを取得します。同時期
// 呼び出しは単一の機内リクエストに重複を除去し、解決済み
// 値はPowerPortalsProClientの寿命中に再利用されます。
import { useViewMetadata } from '@powerportalspro/react';
function MyComponent() {
const { data: viewMetadata, status } = useViewMetadata(viewId);
if (status !== 'success' || !viewMetadata) return null;
const { name, fetchXml, tableName, isDefault } = viewMetadata;
// ...
}[Inject]
private IViewMetadataCache _viewCache { get; set; } = null!;
protected override async Task OnInitializedAsync()
{
var viewMetadata = await _viewCache.GetAsync(viewId);
if (viewMetadata != null)
{
var viewName = viewMetadata.Name;
var fetchXml = viewMetadata.FetchXml;
var tableName = viewMetadata.TableName;
var isDefault = viewMetadata.IsDefault;
}
}テーブルの全ビューを取得する方法
GetAllViewsForTableAsyncを使って特定のテーブルのすべてのビューを取得します。公開閲覧、クイック検索閲覧、検索閲覧のみをViewTypeで絞り込むことができます。
// useViewsForTableは与えられたテーブル上のすべてのビューを返します —
// テーブルごとに1つのキャッシュリクエストがあり、すべての利用者が結果を共有します。
import { useViewsForTable } from '@powerportalspro/react';
import { ViewType } from '@powerportalspro/core';
function MyComponent() {
const { data: allViews } = useViewsForTable('contact');
// 公開意見のみを得られます
const publicViews = allViews?.filter((v) => v.type === ViewType.Public) ?? [];
// デフォルトのビューを見つける
const defaultView = allViews?.find((v) => v.isDefault);
}var allViews = await _viewCache.GetAllViewsForTableAsync("contact");
// 公開意見のみを得られます
var publicViews = allViews
.Where(v => v.Type == ViewType.Public)
.ToList();
// デフォルトのビューを見つける
var defaultView = allViews
.FirstOrDefault(v => v.IsDefault);ヒント
閲覧用ビューメタデータには
IPowerPortalsProService.RetrieveViewMetadataAsyncよりIViewMetadataCacheを好む。キャッシュは冗長なネットワーク呼び出しを避け、すべてのPowerPortalsProグリッドコンポーネントで内部的に利用されます。
IViewMetadataCache Interface
方法
名称 | パラメータ | 種類 | 概要 |
|---|---|---|---|
GetAllViewsForTableAsync | string tableName | Task<IEnumerable<ViewMetadata>> | 指定されたテーブルのすべてのキャッシュされたビューメタデータ(公開ビュー、システムビュー、ユーザー定義ビューを含む)を返します。 |
GetAsync | Guid key CancellationToken token | Task<ViewMetadata> | キーでキャッシュからアイテムを取得します。もしアイテムがキャッシュされていない場合は、基底のソースからフェッチされ、キャッシュされて返されます。 |
名称:
GetAllViewsForTableAsyncパラメータ:
string tableName
種類:
Task<IEnumerable<ViewMetadata>>
概要:
指定されたテーブルのすべてのキャッシュされたビューメタデータ(公開ビュー、システムビュー、ユーザー定義ビューを含む)を返します。
名称:
GetAsyncパラメータ:
Guid key
CancellationToken token
CancellationToken token
種類:
Task<ViewMetadata>
概要:
キーでキャッシュからアイテムを取得します。もしアイテムがキャッシュされていない場合は、基底のソースからフェッチされ、キャッシュされて返されます。
ViewMetadata クラス
性質
名称 | 種類 | デフォルト | 概要 |
|---|---|---|---|
Columns | List<ViewColumn> | グリッドに表示される列、論理名やピクセル幅も含めて。 | |
DisplayName | string? | このビューの表示名はオプションです。設定すると、これはデフォルトのラベルとして使われます。 「選択機能のドロップダウンを見る」ローカライゼーション項目は | |
FetchXml | string | このビューでどのレコードや列が取得されるかを定義するFetchXMLクエリです。 | |
IsDefault | bool | False | これがテーブルのデフォルトビューかどうかを示します。 |
Name | string | ビューの表示名。 | |
QuickFindCompatible | bool | False | このビューがクイックファインド検索に対応しているかどうかを示します。 |
TableName | string | このビューがクエリするDataverseテーブルの論理名。 | |
Type | ViewType? | ビューの種類(Public、AdvancedFind、Associated、QuickFind、Lookupなど)。 | |
UserDefined | bool | False | このビューがユーザーによって作成された(true)かシステムビュー(false)かを示します。 |
名称:
Columns種類:
List<ViewColumn>
概要:
グリッドに表示される列、論理名やピクセル幅も含めて。
名称:
DisplayName種類:
string?
概要:
このビューの表示名はオプションです。設定すると、これはデフォルトのラベルとして使われます。 「選択機能のドロップダウンを見る」ローカライゼーション項目は テーブル。{TableName}.views。{Id}.label が存在する場合は優先されます。
名称:
FetchXml種類:
string
概要:
このビューでどのレコードや列が取得されるかを定義するFetchXMLクエリです。
名称:
IsDefault種類:
bool
デフォルト:
False
概要:
これがテーブルのデフォルトビューかどうかを示します。
名称:
Name種類:
string
概要:
ビューの表示名。
名称:
QuickFindCompatible種類:
bool
デフォルト:
False
概要:
このビューがクイックファインド検索に対応しているかどうかを示します。
名称:
TableName種類:
string
概要:
このビューがクエリするDataverseテーブルの論理名。
名称:
Type種類:
ViewType?
概要:
ビューの種類(Public、AdvancedFind、Associated、QuickFind、Lookupなど)。
名称:
UserDefined種類:
bool
デフォルト:
False
概要:
このビューがユーザーによって作成された(true)かシステムビュー(false)かを示します。
