メイングリッド
MainGridコンポーネントはDataverseレコードを表示するための独立したグリッドです。SubGridとは異なり、親のRecordContextを必要とせず、指定されたテーブルやビューから直接レコードを読み込みます。
ライブデモ contactテーブル上のスタンドアロンMainGridがあり、2つのカスタムビュー(アクティブ連絡先 とマイ連絡先 )に配線されています。ビューピッカーのドロップダウンを使って切り替え、検索ボックスでフィルターを選び、列ヘッダーをクリックしてソートし、フッターで結果をページングできます。親RecordContextは不要で、グリッドは提供されたビューから直接レコードを読み込みます。
Reactの例
ブレイザーの例
誰でも下のグリッドで連絡先を確認できます。ログインして、自分の連絡先を作成、閲覧、更新してください。
No rows are selected.
Row unselected Abagail Miller (501) 801-9303 Abagail_Miller30@yahoo.com Lowe Inc 52 Row unselected Abdul Pollich (319) 579-4439 Abdul73@yahoo.com Wiza, Bradtke and Hintz 54 Row unselected Abel Parisian (631) 444-9854 Abel84@gmail.com Raynor - Lakin 32 Row unselected Abigale Kuvalis (369) 810-9954 Abigale71@gmail.com Murazik Group 65 Row unselected Adell Paucek (260) 615-0566 Adell99@yahoo.com Windler, Toy and D'Amore 40 Row unselected Adella Roob (535) 638-9390 Adella.Roob88@hotmail.com Pollich - Kling 39 Row unselected Adolf Weber (978) 300-6533 Adolf.Weber10@gmail.com West Group 20 Row unselected Adonis Torphy (842) 804-9308 Adonis_Torphy35@hotmail.com Mohr and Sons 58 Row unselected Agustin Goyette (374) 932-0000 Agustin_Goyette@gmail.com Lebsack, Homenick and Carter 25 Row unselected Agustin Rau (986) 867-9045 Agustin_Rau@gmail.com Lehner Group 22
React TypeScript
Razor
テーブル名による読み込み
TableNameパラメータを設定して、そのテーブルのすべての公開ビューを自動的に読み込むようにしてください。最初のデフォルトビューが最初に選択されます。
React
<MainGrid tableName="contact" />
Blazor
<MainGrid TableName="contact" />
ビューIDによる読み込み
ViewIdsとDefaultViewIdを使って、どのビューが利用可能で、どのビューが読み込み時に選択されるかを正確に制御できます。また、CustomViewDefinitionsにインラインのFetchXMLを提供し、コード内で直接ビューを定義することもできます。
React
<MainGrid
viewIds={viewIds}
defaultViewId="..."
/>
const viewIds = ['...', '...'];
Blazor
<MainGrid ViewIds="_viewIds"
DefaultViewId="@(new Guid("..."))">
</MainGrid>
@code {
private List<Guid> _viewIds = new List<Guid>
{
new Guid("..."),
new Guid("..."),
};
}
FetchXMLによるカスタムビュー
CustomViewDefinitionsを使ってカスタムFetchXMLクエリでビューを定義できます。これは、現在のユーザー、リンクされたエンティティ、その他の動的条件に基づくフィルターを含むビューに有用です。
注記
カスタムGridViewDefinitionのIdは、既存のDataverseビューに対応しない 一意のランダムGUIDでなければなりません。既存のビューIDと一致すれば、Dataverseビューが優先され、カスタム定義は無視されます。
React
const customViews: CustomViewDefinition[] = [
{
id: '...',
tableName: 'contact',
displayName: '全接触',
fetchXml: `<fetch>
<entity name="contact">
<attribute name="fullname" />
<attribute name="emailaddress1" />
<order attribute="fullname" />
</entity>
</fetch>`,
columns: [
{ columnName: 'fullname', width: 200 },
{ columnName: 'emailaddress1', width: 250 },
],
},
];
Blazor
private List<GridViewDefinition> _customViews = new List<GridViewDefinition>
{
new GridViewDefinition
{
Id = new Guid("..."),
TableName = "contact",
DisplayName = "全接触",
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 },
}
}
};
ディスプレイネーム
GridViewDefinitionのDisplayNameを設定して、ローカライゼーションファイルの入力を必要とせずにドロップダウンセレクターでビューのデフォルトラベルを提供します。tables.{TableName}.views.{Id}.labelにローカライゼーションキーが存在する場合、DisplayNameよりも優先されます。これは、ローカライゼーションエントリを追加せずにすぐに読みやすい名前を得たいカスタムビューに役立ちます。
ツールバーボタン
MainGridはSubGridと同じツールバーボタンをサポートしています。独立したグリッドでは、NavigateNewRecordGridButtonとNavigateOpenRecordGridButtonが別々のフォームページに移動するためによく使われます。利用可能なすべてのボタンとその設定オプションの完全な参考文献は、グリッドボタンの ドキュメントをご覧ください。
React
<MainGrid tableName="contact">
<GridButtons>
<NavigateNewRecordGridButton url="/contacts/new" />
<NavigateOpenRecordGridButton
urlFor={(record) => `/contacts/edit?contactId=${record.id}`}
/>
</GridButtons>
</MainGrid>
Blazor
<MainGrid TableName="contact">
<Buttons>
<NavigateNewRecordGridButton Url="/contacts/new" />
<NavigateOpenRecordGridButton Url="/contacts/edit?contactId={0}" />
</Buttons>
</MainGrid>
検索ボックスの挙動
ユーザーがグリッドの検索ボックスに入力すると、設定されたビューは自動的に再クエリされ、ビュー内の検索対象となるすべての列に追加のフィルター条件が適用されます。条件は OR ロジックで結びついているため、表示される列 のいずれか が検索語と一致すればレコードが含まれます。デフォルトのマッチセマンティクスは列の種類によって異なります。
テキストおよび検索カラム
テキスト列 (文字列フィールド)や ルックアップ列 (ターゲットレコードのプライマリ名と照合)は、デフォルトで 検索開始 を使用します。 joh のタイプは、 joh で始まる値(例えば John や Johnson)に一致します。マッチングはFetchXMLの like オペレーターに委譲されており、Dataverseでは大文字に区別されません。
*をワイルドカードとして使い、より柔軟なマッチングを行ってください。*hnのタイプ入力は包含スタイルのマッチング(例:John、Johnson)を行います;j*nのタイプは、jとnの間に任意の文字が現れる値をマッチさせます(例:John、Joneson)。ワイルドカードはクエリ時にFetchXMLの%ワイルドカードに変換されます。
選択列
選択列 (オプションセット/ピックリスト)および 複数選択選択列 は、各選択肢の 局所的な表示ラベル と照合され、基となる整数値とは異なります。現在のユーザーの文化ではラベルは大格やアクセントに無神経に比較されるため、 cafe と入力すると Caféとラベル付けされたオプションと一致します。1つ以上のオプションラベルが一致すると、クエリはマッチするオプション値に対してFetchXML条件を発行します。これは単一選択選択列の場合は in 条件、複数選択選択列には contain-values 条件です。ラベルが一致しない場合、その列は条件を寄与しません( OR フィルターのコンパクトさを保ちます)。
選択列はテキスト列と同じワイルドカード*を尊重します。デフォルトではマッチは(Activeと入力actマッチ)で始まり 、先頭*は「contains 」に切り替わり(*act入力するとさらにInactiveとマッチします)。一致する行は、テキストカラムマッチと同様にグリッド上でマッチした部分文字列がハイライトされます。
数値およびマネーカラム
数値列 (int、big int、decimal、double、money)は検索語の比較演算子をサポートします。検索ボックスはオプションの先頭演算子を解析し、対応するFetchXML条件演算子を適用します:
= 100 または単に 100 — 等しい(演算子が指定されていない場合のデフォルト)
> 100 — より大きい
< 100 — より少なく
>= 100 — 大きすぎるか等しい
<= 100 — 以下または等しい
注記
すべての列タイプの検索条件が同じ OR フィルターグループに追加されるため、同じ検索語がテキスト列、検索欄、選択欄、数値列に対して同時に評価されます。名前列と金額列の両方があるグリッドに 100 を入力すると、名前が 100で始まる レコードや 金額が100のレコードと一致します。検索フィルターはビューの既存のフィルターの上に重ねられているため、ビューレベルの制約( statecode = 0 フィルターなど)は常に保持されます。
検索を無効にする
グリッド上の AllowSearch="false" を設定して検索ボックスを完全に隠します。これは、固定されたレコードの少数セットのみを含むグリッドや、外部でフィルタリングを行う場合(例えばカスタムツールバーを通じて)に有用です。
React
<MainGrid tableName="contact" allowSearch={false} />
Blazor
<MainGrid TableName="contact" AllowSearch="false" />
ページングモード
グリッドは PagingMode パラメータ(Blazor)/ pagingMode プロップ(React)を通じて2つのページング戦略をサポートしています。両モードは同じ基盤ビューであるFetchXML、ソート、検索を使い、行がユーザーに表示される方法が異なるだけです。
Paged (デフォルト) — ページサイズセレクターを備えたクラシックな 「前/次の フッター」です。短い結果セットや、ページ番号で飛び回ったり、URL内で深くリンクされたページを共有したい場合に最適です。
Virtualize — 無限巻物 。ページャーフッターは隠されており、ユーザーがレンダリングされた下部をスクロールするごとに行が積み重なり、次のページは自動的に取得されます。合計が利用可能になると、読み取り専用の「Showing 1-N of M」カウンターがページャーに代わります。ユーザーがページごとにナビゲートするのではなく、長いリストをスキャンするのに最適です。
グリッドのページングモードを設定してオプトインしてください:
React
<MainGrid
tableName="contact"
pagingMode={PagingMode.Virtualize}
pageSize={20}
/>
Blazor
<MainGrid TableName="contact"
PagingMode="GridPagingMode.Virtualize"
DefaultItemsPerPage="25" />
ライブデモ — 仮想化モード メインデモと同じ contact グリッドですが、 PagingMode="GridPagingMode.Virtualize" (Blazor)/ pagingMode={PagingMode.Virtualize} (React)が使われ、チャンクサイズも小さくなっているので、スクロールでアキュムレータが使われます。ページャーフッターはなくなりました。下にスクロールして追加のページを引き寄せ、グリッド上部のカウンターが新たな行が次々と更新されるのを見てください。
Reactの例
ブレイザーの例
誰でも下のグリッドで連絡先を確認できます。ログインして、自分の連絡先を作成、閲覧、更新してください。
React TypeScript
Razor
トレードオフ
ページへのジャンプもありません。 仮想化モードは常に最初のページから始まり、前方に引き出します。消費者はもはやN ページにスキップできません。明確なページナビゲーションが必要なら、引き続きPaged。
ページは永続化されていません。 ユーザーのスクロール位置は離散的なページ概念ではないため、 PersistedStateQueryParameter 仮想化モードで p キーを省略しています。選択した閲覧、ソート、(オプトイン)検索は依然としてURLを往復します。
検索やソートは依然として機能しますが、 スクロールインしたアキュムレータがリセットされます。アクティブビューの変更、新しいソートの適用、検索ボックスへの入力で読み込まれた行がドロップされ、上から再取得されます。
ページャーやページサイズセレクターを隠します。 ページサイズセレクタは固定チャンクサイズに置き換えられます。 DefaultItemsPerPage (Blazor)/ pageSize (React)で初期値を設定し、スクロールトリガーページあたり何行取るかを制御します。
フルサイズモード
グリッドが親コンテナの全高を満たすように FullSize="true" 設定してください。これはグリッドがページの主要な内容である場合に有用です。
React
<PageLayout>
<Body>
<MainGrid tableName="contact" fullSize />
</Body>
</PageLayout>
Blazor
<PageLayout>
<Body>
<MainGrid TableName="contact" FullSize="true" />
</Body>
</PageLayout>
持続するグリッド状態
PersistedStateQueryParameterをクエリパラメータ名(例:"gridState")に設定すると、グリッドはそのインタラクティブな状態をその名前の下の単一のURLパラメータにミラーリングします。ユーザー主導の変更—選択したビューの切り替え、ページング、ページサイズの変更、列ヘッダーのクリックによるソート、または(オプトインの)検索ボックスでの入力—は状態を再エンコードし、URLパラメータをそのまま置き換えます。パラメータ(ブックマーク、共有リンク、リフレッシュ)が存在した状態でページを開くと、グリッドは最初の読み込み時にパラメータを読み取り、キャプチャされた状態をすべて復元してからデータを取得します。
React
<MainGrid tableName="contact"
persistedStateQueryParameter="gridState" />
Blazor
<MainGrid TableName="contact"
PersistedStateQueryParameter="gridState" />
何が持続するのか
クエリパラメータは、状態ごとに1つの短い鍵を持つコンパクトなJSONオブジェクトをエンコードします。キーは意図的に略されており、ブックマークされたURLを短く保っています。自然なデフォルトに合致するフィールドは省略されるため、ソートも検索もないページ1のグリッドは、5つのフィールドすべてが入っているグリッドよりもはるかに小さな塊になります。
v — 選択したビューのGUID(小文字、ハイフン付き、括弧なし)。グリッドに設定された ViewIds / CustomViewDefinitions エントリのいずれかと一致します。
p — 1ベースのページ番号。ユーザーが1ページ目(デフォルト)にいる場合は省略されます。
ps — ページあたりの行数。ページのサイズドロップダウンでユーザーの最後の選択を反映します。グリッドの DefaultItemsPerPageと一致する場合は省略します。
s — 秩序立てられた一種の指令配列。各エントリには c (列の論理名)とオプションの d (降順は true に設定されています。昇順は無標識のデフォルトなので d 、その場合は省略されます)。空/未ソート状態はフィールドを完全に省略します。多列ソートは優先順位で保存されます。
q — 現在の検索ボックスのテキスト。グリッドが IncludeSearchInPersistedState="true" で設定されていて、かつボックスの値が空でない場合のみ含まれます。検索語は機密扱いになることがあるため(例:CRMの文脈での顧客名など)、デフォルトでオフにしています。
URLエンコーディング
状態はコンパクトなJSON(空白なし)としてシリアライズされ、クエリパラメータにURLでエンコードされます。連絡先ビューの3ページ目を、姓の順に並べ替え、「smith」を有効にして、以下のペイロードを往復で表示します。
{
"v": "28299c6f-ebc0-4206-9e11-a373d4c9891f",
"p": 3,
"ps": 25,
"s": [
{ "c": "lastname" },
{ "c": "createdon", "d": true }
],
"q": "smith"
}
URLエンコーディング後の実際のアドレスバー値は次のようになります(フレームワークはJSON文字列を書く前に encodeURIComponent を呼び出します):
/grids/main-grid?gridState=%7B%22v%22%3A%2228299c6f-ebc0-4206-9e11-a373d4c9891f%22%2C%22p%22%3A3%2C%22s%22%3A%5B%7B%22c%22%3A%22lastname%22%7D%5D%7D
デフォルト価値剥離
エンコーダはシリアライズ前に、自然なデフォルトに合致するフィールドを除去します。ページ1は p、空のソートリストは s、マークなしの昇順ソートは d、空の検索は qを落とします。ユーザーの操作なしに新たに読み込まれたグリッドは、 v と ps のみを含むブロブにエンコードされ、消費者が触れていない州のブックマークURLが増えないようにしています。
ブラウザ履歴の挙動
状態の変更はURLを history.replaceState で更新します — 新しいエントリーをバックスタックにプッシュするわけではありません。つまり、グリッドページから戻るボタンを押すと、前のソート/ページの組み合わせではなく、前の別個のページ(ユーザーのナビの原点)に戻るということです。このトレードオフは意図的で、単一のグリッドセッションで数十の状態変化が生じ、それぞれをナビゲーションエントリとして押し込むと、アプリの他の部分で戻るボタンが実質的に使えなくなります。
検索永続性の有効化
デフォルトでは検索テキストはURLから除外されているため、グリッドが敏感な用語でフィルタリングされていてもパラメータは安全に共有できます。 IncludeSearchInPersistedState="true" に現在の検索ボックス値を含めるように設定します(上記の q フィールドとして追加)。一度有効化されると、検索はブックマーク可能な状態の一部となり、ユーザーはURLをコピーでき、受信者は同じビュー、ページ、ソート、フィルターの組み合わせにたどり着きます。
React
<MainGrid tableName="contact"
persistedStateQueryParameter="gridState"
includeSearchInPersistedState />
Blazor
<MainGrid TableName="contact"
PersistedStateQueryParameter="gridState"
IncludeSearchInPersistedState="true" />
クロススタック互換性
エンコードされたJSON形状は、BlazorとReactのグリッド実装で同一であり、同じパラメータ名、同じキー(v / p / ps / s / q)、同じ値の意味論を持っています。一方のスタックで生成されたリンクはもう一方のスタックで消費可能であるため、両方のサーフェス(例:公開向けのReactポータルと内部のBlazor管理アプリの両方)を運営する組織は、各stackの翻訳層なしでグリッドURLを共有できます。
1ページに複数のグリッドを配置
同じページ上の2つのグリッドは異なる PersistedStateQueryParameter名を使わなければなりません。各グリッドは自分のパラメータのみを読み書きするため、同じ名前を再利用すると両方のグリッドが同じURLスロットを奪い合うことになります。最後に書き込みた方が勝ち、変更ごとにもう一方のグリッドが状態を失います。一般的な規則として、パラメータはグリッドの役割を名付ける(例:contactsState + accountsState)。
マルチテーブルグリッド
MainGridは、ViewIdsコレクションに複数のテーブルからのビューIDを含めることで、異なるテーブルからのビューを表示できます。ユーザーがビューを切り替えると、グリッドは自動的に正しいテーブルのデータを読み込みます。ナビゲーションボタンのOnClickコールバックを使って、選択したビューのテーブル名に基づいて動的にURLを設定します。
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('不明表');
}
}}
/>
<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('不明表');
}
}}
/>
</GridButtons>
</MainGrid>
Blazor
<MainGrid ViewIds="_viewIds"
CustomViewDefinitions="_customViews"
DefaultViewId="@(new Guid(AllContactsViewId))">
<Buttons>
<NavigateNewRecordGridButton OnClick="OnNewClick" />
<NavigateOpenRecordGridButton OnClick="OnEditClick" />
</Buttons>
</MainGrid>
@code {
private async Task OnNewClick(NavigateGridButtonContext ctx)
{
ctx.Url = ctx.GridContext.SelectedView.TableName switch
{
"contact" => "/contacts/new",
"account" => "/accounts/new",
_ => throw new Exception("不明表"),
};
}
private async Task OnEditClick(NavigateGridButtonContext ctx)
{
ctx.Url = ctx.GridContext.SelectedView.TableName switch
{
"contact" => "/contacts/edit?id={0}",
"account" => "/accounts/edit?id={0}",
_ => throw new Exception("不明表"),
};
}
}
反応してください
ブレイザー
MainGrid クラス パラメータ
AllowChangingPageSizebool True
AllowDownloadForFileColumnsbool True
AllowEditbool False
ユーザーがグリッドのインライン編集をオンにするオプションがあるべきです。
AllowNavigateOnPrimaryNameClickbool True
true (デフォルト)でグリッドに「編集」ボタンが登録されている場合(a GridButton with IsOpenRecordButton =true )、レンダリングするセル テーブルのプライマリーネーム列はハイパーリンクになります。クリックしても同じことが発信されます 行ごとにダブルクリックで呼び出す機能があり、ユーザーが編集にジャンプできるようになっています フォーム(または登録ボタンに応じてナビゲートされた編集URL)を先に使わない 行を選ぶ。ハイパーリンクを抑制するためにfalse に設定し、 プライマリーネームセルをプレーンテキストとして使うことができます。編集ボタンが登録されていないと効果はありません。
AllowNavigateOnRowDoubleClickbool True
true (デフォルト)でグリッドに「編集」ボタンが登録されている場合(a GridButton with IsOpenRecordButton=true )、行をダブルクリックします そのボタンのOnClick を呼び出して行の記録を開けます 編集ダイアログか編集URLへのアクセス、どちらかのボタンが対応しているのです。設定 false はダブルクリックハンドラを抑制するために使われます。編集ボタンがなければ効果はありません 登録されています。
AllowPreviewForFileColumnsbool True
AllowSearchbool True
ユーザーがグリッドを検索することが許されるべきか。
BorderVisiblebool True
ButtonsRenderFragment?
ColumnsRenderFragment?
CustomViewDefinitionsList<GridViewDefinition>?
ドロップダウンに表示するカスタムビュー。
DataSourceViewDataSource?
オプションで共有
Data.ViewDataSource。設定すると、グリッドは データソースから行数+総カウントを読み取る代わりに 独自の
RetrieveRecordsAsync(System.String)を発行すること コール — 同じデータソースが兄弟姉妹を駆動することもあります
<DataverseChart> または2つ目のグリッドで、すべてが使えます ページ分け/フィルター/検索を一度の往復でまとめて行えます。
単独使用( GridBase.DataSourceなし)は 既存の内部状態機械 — グリッドはFetchXMLを構成します IPowerPortalsProService 経由で直接フェッチします。 データソースが所有していないもの: グリッドごとのUIです 状態(選択された行、保留中の行が作成される/更新/削除、 列幅)をそれらはグリッドローカルのままで、2つのグリッドが1つを共有しています データソースは依然として独立した選択とグリッドごとの選択を持つことができます 編集保留中。 ViewDataSource.Highlight が設定された場合(例:aを通じて) クロスフィルターの「ハイライト」モードでチャートスライスクリック)、行の ハイライトされた列の値が視覚的に一致しない CSSクラスでミュートされ、行データ+選択は以下の通りです。 影響はありません(ソフトクロスフィルターは純粋にスタイリングです)。 DefaultItemsPerPageint 50
ページ上で読み込むデフォルトのレコード数。
DefaultViewIdGuid?
グリッドが初期ロード時に表示されるはずのビューのID。
Editablebool False
グリッドのインライン編集は有効ですか?
FiltersIReadOnlyList<GridFilterBase>?
追加のサーバー側フィルターと、解決されたビューにマージした ページングやソート、検索の前にfetchXMLを使いましょう。転送先へ
Query.IFetchXmlQueryComposerFetchXmlQueryOptions.Filters、 したがって、各エントリはランタイムタイプ(例:
Models.RelationshipFilter ANDは関係リンクエンティティをマージします)。 典型的な使い方:
LinkExistingRecordGridButton ピッカーが
Models.RelationshipFilterRelationshipFilterMode.ExcludeExistingRecordsもう― リンクされたレコードはM2Mの検索ダイアログからは隠されています。
SubGrid 自身の内部と加算的に結合します 関係フィルター(これはFetchXMLに直接組み込まれています) 作曲家のフィルター枠を通るのではなく)— 両方とも終わります 同じクエリで上にいる。 FullSizebool False
HidePagingbool False
ページサイズやページングコンポーネントを強制的に非表示にしてください。 アイテム数が分かっていて、ページサイズがアイテム数より大きいものに設定されている場合のみこれを行います。
IncludeSearchInPersistedStatebool False
真の場合 、アクティブ検索テキストは永続化されたものに含まれます 状態URLパラメータ(q フィールド下)。デフォルトはfalse に設定されます — 検索語は敏感で、ブラウザ履歴に蓄積されることがあります。 HTTPリファラーにリークするため、グリッドはURLからそれらを排除します。ただし 消費者は明示的にオプトインします。効果はありません GridBase.PersistedStateQueryParameterはまだ設定されていません。
IsDirtybool False
グリッドに保存されていない作成、更新、削除の未処理があるかどうかを示します。
LoadedRecordsIEnumerable<TableRecord>
現在グリッドに表示されている記録(最新の結果ページ)。 「表示されたすべてのもの」に対応する必要があるツールバーコマンド、例えばバルク用に設計されています ダウンロードボタン。ページにまたがらない。ページ単位の一括操作は 代わりに自分のページなしの取ってこい。
MaxHeightstring?
グリッドコントロールが拡張すべき最大高さ。
MinHeightstring? 300px
グリッド制御が占有すべき最低高さ。
ModeGridMode
RecordSelection
PageSizesIEnumerable<int>
グリッド用の利用可能なページサイズのコレクション。
PagingModeGridPagingMode
Paged
PersistedRowsSnapshotPersistedGridRowsSnapshot?
サーバープリレンダー→レンダリングされた行のページのインタラクティブなハンドオフです。フレームワーク プリレンダリングの最後にこの性質を自動永続化し、その前に再ハイドレートします GridBase.OnInitializedAsync インタラクティブ側に位置しているので、データフェッチは 最初のインタラクティブレンダリングを飛ばしました。フレームワークによってレンダーツリーの位置でキーされます。 消費時の場 PersistedGridRowsSnapshot.ViewId がチェックされます 時間がかかるので、別のビューで再レンダリングすると、古くなった行は破棄されます。パブリック・トゥ・ フレームワークの要件 — [PersistentState] はパブリックプロパティを以下でのみ認識します。 内省――しかし外部に設定する意図はありません。
PersistedStateQueryParameterstring?
グリッドのインタラクティブなメッセージを永続させるためのURLクエリ文字列パラメータの名前 州から。設定すると、グリッドは初期負荷時にこのパラメータを読み取り、 アクティブなビュー、ページ番号、ページサイズをシードし、そこからソートします。 その後のユーザー操作(表示ピック、ページ変更、ヘッダーソートなど) 新しい状態を Components.NavigationManagerで書き返す 置換-状態経路。パーシステンスはページリフレッシュやブックマークによって存続します。
SelectedRecordsIEnumerable<TableRecord>
現在グリッドで選ばれている記録。
SelectFromEntireRowbool True
SelectModeDataGridSelectMode
Multiple
TableNamestring?
Titlestring?
表示のドロップダウンが表示されないときに表示する名前。
TransformViewAsyncFunc<GridViewDefinition, Task<GridViewDefinition>>?
ビューが読み込まれた直後、グリッドが使用する前に実行されるオプションのコールバック それはカラムやクエリを作成するためのものでした。修正 Models.GridViewDefinition を に戻す グリッドが最終的にレンダリングするものを変換するなど、特定の列を確保するなど ビュー自身の構成に関わらず常に存在します。非同期で、発信者は 何をするか決める際には、メタデータキャッシュ、サービス、その他の非同期リソースを参照してください 含める。
ViewIdsIEnumerable<Guid>?
ビュードロップダウンでグリッドが制限すべきビューのIDリスト。
ViewSortViewSort
NameAscending
ビューのドロップダウンでビューの順番を並べ替えてください。
名称:
AllowChangingPageSize
種類:
bool
デフォルト:
True
名称:
AllowDownloadForFileColumns
種類:
bool
デフォルト:
True
名称:
AllowEdit
種類:
bool
デフォルト:
False
概要:
ユーザーがグリッドのインライン編集をオンにするオプションがあるべきです。
名称:
AllowNavigateOnPrimaryNameClick
種類:
bool
デフォルト:
True
概要:
true (デフォルト)でグリッドに「編集」ボタンが登録されている場合(a GridButton with IsOpenRecordButton =true )、レンダリングするセル テーブルのプライマリーネーム列はハイパーリンクになります。クリックしても同じことが発信されます 行ごとにダブルクリックで呼び出す機能があり、ユーザーが編集にジャンプできるようになっています フォーム(または登録ボタンに応じてナビゲートされた編集URL)を先に使わない 行を選ぶ。ハイパーリンクを抑制するためにfalse に設定し、 プライマリーネームセルをプレーンテキストとして使うことができます。編集ボタンが登録されていないと効果はありません。
名称:
AllowNavigateOnRowDoubleClick
種類:
bool
デフォルト:
True
概要:
true (デフォルト)でグリッドに「編集」ボタンが登録されている場合(a GridButton with IsOpenRecordButton=true )、行をダブルクリックします そのボタンのOnClick を呼び出して行の記録を開けます 編集ダイアログか編集URLへのアクセス、どちらかのボタンが対応しているのです。設定 false はダブルクリックハンドラを抑制するために使われます。編集ボタンがなければ効果はありません 登録されています。
名称:
AllowPreviewForFileColumns
種類:
bool
デフォルト:
True
名称:
AllowSearch
種類:
bool
デフォルト:
True
概要:
ユーザーがグリッドを検索することが許されるべきか。
名称:
BorderVisible
種類:
bool
デフォルト:
True
名称:
Buttons
種類:
RenderFragment?
名称:
Columns
種類:
RenderFragment?
名称:
CustomViewDefinitions
種類:
List<GridViewDefinition>?
概要:
ドロップダウンに表示するカスタムビュー。
名称:
DataSource
種類:
ViewDataSource?
概要:
オプションで共有 Data.ViewDataSource。設定すると、グリッドは データソースから行数+総カウントを読み取る代わりに 独自の RetrieveRecordsAsync(System.String)を発行すること コール — 同じデータソースが兄弟姉妹を駆動することもあります <DataverseChart> または2つ目のグリッドで、すべてが使えます ページ分け/フィルター/検索を一度の往復でまとめて行えます。 単独使用( GridBase.DataSourceなし)は 既存の内部状態機械 — グリッドはFetchXMLを構成します IPowerPortalsProService 経由で直接フェッチします。 データソースが所有していないもの: グリッドごとのUIです 状態(選択された行、保留中の行が作成される/更新/削除、 列幅)をそれらはグリッドローカルのままで、2つのグリッドが1つを共有しています データソースは依然として独立した選択とグリッドごとの選択を持つことができます 編集保留中。 ViewDataSource.Highlight が設定された場合(例:aを通じて) クロスフィルターの「ハイライト」モードでチャートスライスクリック)、行の ハイライトされた列の値が視覚的に一致しない CSSクラスでミュートされ、行データ+選択は以下の通りです。 影響はありません(ソフトクロスフィルターは純粋にスタイリングです)。 名称:
DefaultItemsPerPage
種類:
int
デフォルト:
50
概要:
ページ上で読み込むデフォルトのレコード数。
名称:
DefaultViewId
種類:
Guid?
概要:
グリッドが初期ロード時に表示されるはずのビューのID。
名称:
Editable
種類:
bool
デフォルト:
False
概要:
グリッドのインライン編集は有効ですか?
名称:
Filters
種類:
IReadOnlyList<GridFilterBase>?
概要:
追加のサーバー側フィルターと、解決されたビューにマージした ページングやソート、検索の前にfetchXMLを使いましょう。転送先へ Query.IFetchXmlQueryComposerFetchXmlQueryOptions.Filters、 したがって、各エントリはランタイムタイプ(例: Models.RelationshipFilter ANDは関係リンクエンティティをマージします)。 典型的な使い方:LinkExistingRecordGridButton ピッカーが Models.RelationshipFilterRelationshipFilterMode.ExcludeExistingRecordsもう― リンクされたレコードはM2Mの検索ダイアログからは隠されています。 SubGrid 自身の内部と加算的に結合します 関係フィルター(これはFetchXMLに直接組み込まれています) 作曲家のフィルター枠を通るのではなく)— 両方とも終わります 同じクエリで上にいる。 名称:
FullSize
種類:
bool
デフォルト:
False
名称:
HidePaging
種類:
bool
デフォルト:
False
概要:
ページサイズやページングコンポーネントを強制的に非表示にしてください。 アイテム数が分かっていて、ページサイズがアイテム数より大きいものに設定されている場合のみこれを行います。
名称:
IncludeSearchInPersistedState
種類:
bool
デフォルト:
False
概要:
真の場合 、アクティブ検索テキストは永続化されたものに含まれます 状態URLパラメータ(q フィールド下)。デフォルトはfalse に設定されます — 検索語は敏感で、ブラウザ履歴に蓄積されることがあります。 HTTPリファラーにリークするため、グリッドはURLからそれらを排除します。ただし 消費者は明示的にオプトインします。効果はありません GridBase.PersistedStateQueryParameterはまだ設定されていません。
名称:
IsDirty
種類:
bool
デフォルト:
False
概要:
グリッドに保存されていない作成、更新、削除の未処理があるかどうかを示します。
名称:
LoadedRecords
種類:
IEnumerable<TableRecord>
概要:
現在グリッドに表示されている記録(最新の結果ページ)。 「表示されたすべてのもの」に対応する必要があるツールバーコマンド、例えばバルク用に設計されています ダウンロードボタン。ページにまたがらない。ページ単位の一括操作は 代わりに自分のページなしの取ってこい。
名称:
MaxHeight
種類:
string?
概要:
グリッドコントロールが拡張すべき最大高さ。
名称:
MinHeight
種類:
string?
デフォルト:
300px
概要:
グリッド制御が占有すべき最低高さ。
名称:
Mode
種類:
GridMode
デフォルト:
RecordSelection
名称:
PageSizes
種類:
IEnumerable<int>
概要:
グリッド用の利用可能なページサイズのコレクション。
名称:
PagingMode
種類:
GridPagingMode
デフォルト:
Paged
名称:
PersistedRowsSnapshot
種類:
PersistedGridRowsSnapshot?
概要:
サーバープリレンダー→レンダリングされた行のページのインタラクティブなハンドオフです。フレームワーク プリレンダリングの最後にこの性質を自動永続化し、その前に再ハイドレートします GridBase.OnInitializedAsync インタラクティブ側に位置しているので、データフェッチは 最初のインタラクティブレンダリングを飛ばしました。フレームワークによってレンダーツリーの位置でキーされます。 消費時の場 PersistedGridRowsSnapshot.ViewId がチェックされます 時間がかかるので、別のビューで再レンダリングすると、古くなった行は破棄されます。パブリック・トゥ・ フレームワークの要件 — [PersistentState] はパブリックプロパティを以下でのみ認識します。 内省――しかし外部に設定する意図はありません。
名称:
PersistedStateQueryParameter
種類:
string?
概要:
グリッドのインタラクティブなメッセージを永続させるためのURLクエリ文字列パラメータの名前 州から。設定すると、グリッドは初期負荷時にこのパラメータを読み取り、 アクティブなビュー、ページ番号、ページサイズをシードし、そこからソートします。 その後のユーザー操作(表示ピック、ページ変更、ヘッダーソートなど) 新しい状態を Components.NavigationManagerで書き返す 置換-状態経路。パーシステンスはページリフレッシュやブックマークによって存続します。
名称:
SelectedRecords
種類:
IEnumerable<TableRecord>
概要:
現在グリッドで選ばれている記録。
名称:
SelectFromEntireRow
種類:
bool
デフォルト:
True
名称:
SelectMode
種類:
DataGridSelectMode
デフォルト:
Multiple
名称:
TableName
種類:
string?
名称:
Title
種類:
string?
概要:
表示のドロップダウンが表示されないときに表示する名前。
名称:
TransformViewAsync
種類:
Func<GridViewDefinition, Task<GridViewDefinition>>?
概要:
ビューが読み込まれた直後、グリッドが使用する前に実行されるオプションのコールバック それはカラムやクエリを作成するためのものでした。修正 Models.GridViewDefinition を に戻す グリッドが最終的にレンダリングするものを変換するなど、特定の列を確保するなど ビュー自身の構成に関わらず常に存在します。非同期で、発信者は 何をするか決める際には、メタデータキャッシュ、サービス、その他の非同期リソースを参照してください 含める。
名称:
ViewIds
種類:
IEnumerable<Guid>?
概要:
ビュードロップダウンでグリッドが制限すべきビューのIDリスト。
名称:
ViewSort
種類:
ViewSort
デフォルト:
NameAscending
概要:
ビューのドロップダウンでビューの順番を並べ替えてください。
イベント
EditableChangedEventCallback<bool> インライン編集の状態が変わったときにコールバックが呼び出されます。
SelectedRecordsChangedEventCallback<IEnumerable<TableRecord>> 選択したレコード収集が変更された際にコールバックが呼び出されます。
名称:
EditableChanged
種類:
EventCallback<bool>
概要:
インライン編集の状態が変わったときにコールバックが呼び出されます。
名称:
SelectedRecordsChanged
種類:
EventCallback<IEnumerable<TableRecord>>
概要:
選択したレコード収集が変更された際にコールバックが呼び出されます。
方法
ClearSelectionAsyncTask 現在選択されているすべての行をクリアします。
OpenFileDownloadAsyncTableRecord record string columnName Task
OpenFilePreviewAsyncTableRecord record string columnName Task
RefreshAsyncbool forceRefresh Task グリッド制御と基盤データを更新します。
Validatebool グリッド内の編集可能なすべての行を検証します。
名称:
ClearSelectionAsync
種類:
Task
概要:
現在選択されているすべての行をクリアします。
名称:
OpenFileDownloadAsync
パラメータ:
TableRecord record string columnName
種類:
Task
名称:
OpenFilePreviewAsync
パラメータ:
TableRecord record string columnName
種類:
Task
名称:
RefreshAsync
パラメータ:
bool forceRefresh
種類:
Task
概要:
グリッド制御と基盤データを更新します。
名称:
Validate
種類:
bool
概要:
グリッド内の編集可能なすべての行を検証します。
GridViewDefinition クラス 性質
ColumnsList<ViewColumn>
グリッドに表示される列、論理名やピクセル幅も含めて。
DisplayNamestring?
このビューの表示名はオプションです。設定すると、これはデフォルトのラベルとして使われます。 「選択機能のドロップダウンを見る」ローカライゼーション項目は テーブル。{TableName}.views。{Id}.label が存在する場合は優先されます。
FetchXmlstring
このビューでどのレコードや列が取得されるかを定義するFetchXMLクエリです。
TableNamestring
このビューがクエリするDataverseテーブルの論理名。
名称:
Columns
種類:
List<ViewColumn>
概要:
グリッドに表示される列、論理名やピクセル幅も含めて。
名称:
DisplayName
種類:
string?
概要:
このビューの表示名はオプションです。設定すると、これはデフォルトのラベルとして使われます。 「選択機能のドロップダウンを見る」ローカライゼーション項目は テーブル。{TableName}.views。{Id}.label が存在する場合は優先されます。
名称:
FetchXml
種類:
string
概要:
このビューでどのレコードや列が取得されるかを定義するFetchXMLクエリです。
名称:
TableName
種類:
string
概要:
このビューがクエリするDataverseテーブルの論理名。