モデル駆動型アプリのフォームは、ユーザーがテーブル レコードの作成、表示、または編集に使用するユーザー インターフェイス (UI) を提供します。 この記事では、カスタマイズ ツールで SystemForm テーブルとフォーム デザイナーを使用して、プログラムでフォームを作成または編集する方法について説明します。 コード例を使用して、フォーム定義にアクセスし、フォームのプロパティを理解し、フォームを実装する方法について説明します。
フォーム定義へのアクセス
SystemForm テーブルには、フォームとダッシュボードと視覚化が格納されます。 テーブルのフォーム定義は、次の 2 つの方法で検査できます。
テーブルをアンマネージド ソリューションに含め、ソリューションをエクスポートします。
SystemFormテーブルに対してクエリを実行します。
エクスポートされたテーブルから FormXML を表示する
エクスポートされたマネージド ソリューションには、カスタマイズしたシステム フォームの定義のみが含まれます。 システム フォームの定義を表示するには、フォームを変更するか、既存のフォームを新しい名前で保存して新しいフォームを作成する必要があります。
ソリューションをエクスポートした後、内容を抽出し、 customizations.xml ファイルを表示します。 フォームの定義は、 ImportExportXml>Entities>Entity>FormXmlにあります。
<FormXml> ノードでは、フォームの種類ごとに、フォームの種類を指定する <forms> パラメーターを使用して、type要素にグループ化されます。
フォームのプロパティ
次の表は、主な SystemForm テーブルの列と対応するデータについて説明しています。このデータには、ソリューションとともにエクスポートされた XML 要素が含まれています。
| SystemForm プロパティ | FormXML 要素 | プロパティ |
|---|---|---|
AncestorFormId |
<ancestor> |
親フォームを表す一意識別子です。 既存のフォームに 名前を付けて保存 を使用するか、SDK for .NET CopySystemFormRequest クラスまたは Web API CopySystemForm アクションを使用して、新しいフォームを作成するときにこのプロパティを設定 します。 |
CanBeDeleted |
<CanBeDeleted> |
このコンポーネントを削除できるかどうかを指定する情報。 この管理プロパティは、マネージド ソリューションをインポートしてフォームを作成する場合にのみ適用されます。 |
Description |
<Descriptions> |
Description は文字列で、<Descriptions> にはフォームの説明のためのローカライズされたラベルが含まれています。ローカライズされたラベルは、 RetrieveLocLabelsRequestを使用して取得できます。 |
FormActivationState |
<FormActivationState> |
フォームの状態を指定します。 「メイン」の種類のフォームのみを非アクティブ化できます。 有効な値: - 0: Inactive- 1: Active |
FormId |
<formid> |
フォームを表す一意識別子 |
FormPresentation |
<FormPresentation> |
このフォームが Microsoft Dataverse の更新された UI レイアウトにあるかどうかを指定します。 |
FormXml |
<form> |
フォーム レイアウトの XML 表現です。 |
IntroducedVersion |
<IntroducedVersion> |
フォームが追加されたソリューションのバージョンです。 |
IsAIRMerged |
なし | このフォームを Dataverse の更新された UI レイアウトと統合するかどうかを指定します。 |
IsCustomizable |
<IsCustomizable> |
このコンポーネントがカスタマイズ可能かどうかを指定する情報です。 この管理プロパティは、マネージド ソリューションをインポートしてフォームを作成する場合にのみ適用されます。 |
IsDefault |
なし | フォームまたはダッシュボードがシステムの既定であるかどうかを指定する情報です。 |
Name |
<LocalizedNames> |
Name は文字列で、<LocalizedNames> にはフォーム名のためのローカライズされたラベルが含まれています。ローカライズされたラベルは、 RetrieveLocLabelsRequestを使用して取得できます。 |
ObjectTypeCode |
フォームは、 Entity 要素の子孫です。 |
ObjectTypeCode 値はテーブルの論理名です。 |
Type |
<forms> 要素 type パラメーター |
フォームで有効な値は以下の通りです。 - 2: main- 5: mobile- 6: quick- 7: quickCreate |
フォームを作成して編集する
新しいフォームは、 EntityMetadata.CanCreateForms で許可されているテーブルに対してのみ作成できます。
フォームを直接作成するか、 CopySystemForm メッセージを使用して新しいフォームを作成します。
SDK for .NET CopySystemFormRequest クラスまたは Web API CopySystemForm アクションを使用します。 フォーム エディターで CopySystemForm メッセージまたは 名前を付けて保存 を使用する場合、フォーム間の継承はありません。 したがって、基本フォームに対する変更は、そのフォームから作成されたフォームには自動的には適用されません。
フォーム定義を編集する場合は、マネージド ソリューションをエクスポートし、フォーム定義を編集してから、ソリューションを再インポートします。 フォームを手動で編集する場合は、スキーマ検証をサポートする XML エディターを使用します。 詳細については、「 スキーマ検証を使用してカスタマイズ XML ファイルを編集する」を参照してください。
クライアント API を使用してダイアログでメイン フォームを開く
クライアント API を使用してダイアログでメイン フォームを開くには、 Xrm.Navigation.navigateTo メソッドを呼び出します。 Xrm.Navigation.navigateTo API メソッドは、サイズや位置など、いくつかのオプションを含むダイアログを開きます。
ヒント
Xrm.Navigation.openForm メソッドでは、メイン フォームをダイアログとして開く機能はサポートされていません。
例: 新しいレコードを開く
この例では、ダイアログが新規レコードを作成する新たな取引先企業のフォームを開きます。 ダイアログは、呼び出されたフォームまたは呼び出し元のフォームの上に、使用可能なウィンドウの最大 50% をモーダルとして使用して、中央にポップアップ表示されます。
var pageInput = {
pageType: "entityrecord",
entityName: "account",
formType: 2,
};
var navigationOptions = {
target: 2,
width: {value: 50, unit:"%"},
position: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions);
例: 既存のレコードを開く
この例では、コンタクトフォームのアカウントID値を使用して、既存のアカウントレコードを開きます。 ID を任意のレコード ID 値に置き換えて、ダイアログでレコードを開きます。
var pageInput = {
pageType: "entityrecord",
entityName: "account",
formType: 2,
entityId: "00aa00aa-bb11-cc22-dd33-44ee44ee44ee" //replace with actual ID
};
var navigationOptions = {
target: 2,
width: {value: 80, unit:"%"},
position: 1
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions);
例: サイド ウィンドウで新しいレコードを開く
この例では、ダイアログ ウィンドウの右隅で新しいレコードを開きます。 この動作は、ピクセル オプションを使用して実現できます。
var pageInput = {
pageType: "entityrecord",
entityName: "account",
formType: 2,
};
var navigationOptions = {
target: 2,
width: {value: 500, unit:"px"},
position: 2
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions);
例: コールバック メソッドを使用してダイアログでメイン フォームを開く
この例では、レコードを保存してダイアログを閉じた後、コールバック メソッドを使用してメイン フォーム ダイアログを呼び出す方法を示します。
var pageInput = {
pageType: "entityrecord",
entityName: "account",
formType: 2
};
var navigationOptions = {
target: 2,
width: {value: 80, unit:"%"},
position: 2
};
Xrm.Navigation.navigateTo(pageInput, navigationOptions).then(
function success(result) {
console.log("Record created with ID: " + result.savedEntityReference[0].id +
" Name: " + result.savedEntityReference[0].name)
// Handle dialog closed
},
function error() {
// Handle errors
}
);
参照
フォームの作成および設計
SystemForm テーブル
フォーム XML スキーマ
Xrm.Navigation.navigateTo