PowerApps でリストフォーム カスタマイズ: 新規時と編集時で画面切り替え
SharePoint リストフォームのカスタマイズを行う際の Tips です。
新規入力時に利用するフォームと、既存アイテムの編集時に利用するフォームを別画面で用意している場合に、動的に切り替える方法です。同様の内容でも、PowerApps アプリを作成する際と、SharePoint リスト フォームを PowerApps でカスタマイズする場合で設定方法が異なるため、今回は SharePoint リストフォームのカスタマイズ時にこれを設定する方法をご紹介します。
■ 設定したい内容
新規入力時と既存アイテムの編集時でフォーム内容を変更したい。
■ 既定の設定内容確認
リストフォームを PowerApps でカスタマイズする場合、下記ユーザー操作による動作はプロパティにて設定できます。
- リスト内の [+新規] をクリックしてフォームを開いた場合
- 既存アイテムの編集としてフォームを開いた場合
- フォームをキャンセルした場合
- フォームを保存した場合
次のようなリストがあったとして、まず既定でどうなってるかみてみましょう。
PowerApps のフォームカスタマイズ画面を開いて内容を確認すると、FormScreen1 という画面が既定で用意されており、画面内には SharePointForm1 という編集フォーム コントロールが含まれていることが確認できます。
既定で用意される画面はひとつですので、新規入力時/編集時/表示時すべてでこの画面を利用しているということです。新規/編集/表示、どの操作でフォームが開かれたかによって、切り替える設定を続いてみてみると、SharePoint リストフォームカスタマイズ時に用意される設定である SharePointIntegration の各プロパティに既定の設定内容が確認できます。 |
■ 設定方法
1.画面編集
- 既定の SharePointForm1 画面を複製
- FormScreen1 を NewScreen に画面名変更
- NewScreen 画面内の編集フォーム (SharePointForm1) の名前を NewForm に変更。
編集フォーム内の列について、列Cを読み取り専用に設定変更 (タイトル、列A、列Bが入力可能) - コピーで作成した FormScreen 1_1 を EditScreen に画面名を変更
- EditScreen 画面内の編集フォーム (SharePointForm1_1) の名前を EditForm に変更
編集フォーム内の列について、列Aと列Bを読み取り専用に設定変更 (タイトル、列Cのみが編集可能)
2.SharePointIntegration のプロパティ設定
次のように編集する。
プロパティ | 数式 |
---|---|
OnNew | Set(SPFormMode, “New”); NewForm(NewForm); Navigate(NewScreen, ScreenTransition.None) |
OnEdit | Set(SPFormMode, “Edit”); EditForm(EditForm); Navigate(EditScreen, ScreenTransition.None) |
OnView | Set(SPFormMode, “Disp”); ViewForm(NewForm); Navigate(NewScreen, ScreenTransition.None) |
OnSave | If(SPFormMode =”New”, SubmitForm(NewForm), If(SPFormMode=”Edit”, SubmitForm(EditForm))) |
OnCancel | If(SPFormMode =”New”, ResetForm(NewForm), If(SPFormMode =”Edit”, ResetForm(EditForm))) |
ここでは新規入力時と編集時を切り替える設定を行いましたが、応用として列の値に応じて画面を切り替えることもできますね。
以上、奥田でした。