操作ボタン

操作ボタンはサーバーが登録した操作を実行します。カスタムAPI、カスタムアクション、Dataverseのメッセージ、またはあなたのコードのいずれかで、登録されたユーザーにのみ表示されます。ボタンはサーバーにサインインしたユーザーが実行可能な操作を一度だけ尋ね、送信するレコードをユーザーが行う可能性のある操作と照合するため、サーバーが拒否するようなものを提供しません。サーバーは送信時にすべてのリクエストを判断します。

操作の登録

サーバーの Program.csに操作を登録します:Dataverse操作の場合は AddOperationAccess 、 AddOperationHandler は自分のコードです。 AddPortalRole内で、 WithOperationAccess と WithOperationHandler は役割の保持者に1つずつ付与します。登録は、誰が操作を実行できるか、リクエストが持つパラメータ、指すべきレコード、そして返ってくる出力を規定します。

  • ForEveryone()、 ForSignedInUsers()、 ForContactsMatching(fetchXml) 、 ForWebRoles(...) が誰が実行できるかを決めています。ロールの登録はその役割の保有者のためのものです。Dataverseネイティブセキュリティの下では、連絡先はポータルロールではなくウェブロールを保持し、実行権限を持つセキュリティロールを持つユーザーのみがカスタムAPIを提供します。
  • 自分のコードへのリクエストはDataverse操作と同じように判断されます。ハンドラーはサーバーが設定したパラメータを埋めた合格リクエストのみを認識し、呼び出し者は登録が返す出力のみを見る。
  • 自分のコードはDataverseのトランザクションを共有できないため、リクエストは自動的に送られます。他のものと一緒に処理するバッチは拒否されます。
  • セキュリティ は登録書が伝えるすべての内容を説明しています。

オペレーションボタン

操作が属する場所には OperationButton を入れ、演算名とその記録に入るパラメータを付けます。

React Blazor
  • この処理を実行しないユーザーには隠されており、回答が届く間に; WhenNotAllowed (whenNotAllowed)を設定して代わりに無効にします。回答は一度だけ求められ、アプリが開いている間に保持されます。サーバーが拒否したリクエストは再度求められます。
  • レコードは RecordParameterに入ります: Record、参照による任意の記録、または保存された後はボタンが入っている RecordContext の記録です。ユーザーは登録の要求に応じてその記録に対応できなければなりません。フォームのレコードにはユーザーが何をできるかが記され、参照名付きのレコードが読み取られます。
  • フォームの場合、そのフォームのレコードに対するDataverse操作は、変更後にフォーム自身のセーブに送信されるため、両方が保存されるかどちらでも保存されず、レコードが読み戻されます。フォームの変更が保存された後、あなたのコードが実行されます。
  • Parameters はすべてのリクエストに送信され、 GetParametersAsync (getParameters)はボタンをクリックすると、例えばダイアログからさらに多くを集めます。何も返さないとクリックはキャンセルされます。 ConfirmationMessage は操作を実行する前に尋ね、 OnCompleted は出力を返します。
  • テキストの Label 内容やアイコン、ツールチップ、見た目を他のボタンと同じように設定してください。

例

デモは数行のコードが全員の操作として登録されます。名前を入力してボタンをクリックすると、サーバーが応答し、ページが挨拶を書きます。

Reactの例 ブレイザーの例 React TypeScript Razor
挨拶して

オペレーショングリッドボタン

グリッドのツールバーでは、 OperationGridButton 選択された各行に対して一度だけ操作を実行し、その行を RecordParameterに送信し、その後グリッドを更新します。選択されたすべての行がユーザーが行動可能な行であり、各行がそれ自体を示している間に有効化されます。Dataverse操作のリクエストは1つのトランザクションで送信されるため、すべて実行するか、実行しないかのどちらかです。自分のコードは一度に1行ずつ動作し、失敗した最初の行で停止します。

React Blazor

例:選択した各行について

いくつかのアカウントを選択して「チェック」をクリックします。デモのコードがそれぞれを読み取り、その名前に答えます。承認は訪問者が保持していないポータルロールにのみ付与されるため、無効と表示されます。

Reactの例 ブレイザーの例 React TypeScript Razor
すべての記録
ソート
すべての記録
ページサイズ 102050100
ソート
アカウント名
アカウント名
会社名や事業名を入力してください。
口座番号
口座番号
アカウントのID番号やコードを入力して、システムビューで素早く検索・特定できます。
メイン電話
メイン電話
このアカウントのメイン電話番号を入力してください。
住所1:市
住所1:市
プライマリー住所には市名を入力してください。
年間収入
年間収入
財務パフォーマンス分析の指標として使われる口座の年間収益を入力します。
一次接触
一次接触
アカウントの主要な連絡先を選択して、連絡先情報に素早くアクセスできるようにします。
Abernathy - MacGyverKTWSLQHY(491) 600-8029Tampa$15,959,059.84Bradford Kiehn
Abshire - Marks4EBO9F42(432) 879-3107Boston$14,635,260.82Archibald Bailey
Adams - TorphyK6VNNUCN(864) 842-2566Annapolis$4,567,299.55Merle Vandervort
Altenwerth, D'Amore and ManteF9MN5BAZ(125) 048-0015Gulfport$3,839,082.81Heidi Reichel
Ankunding and Sons92P2G0SF(603) 147-5429Fargo$32,724,448.89Fatima White
Balistreri, Heller and Murphy3Y0AF481(909) 808-9886New Haven$7,097,756.35Angie Kreiger
Balistreri, Steuber and SchultzFF5RCGXG(435) 761-0052Hattiesburg$35,943,517.75Jake Bogisich
Bartoletti LLCJBQ0L2O8(292) 573-7498Santa Fe$766,813.66Cecil Sipes
Bartoletti, Ratke and BeattyWZIDG7K2(267) 075-5978Portland$32,338,459.84Tabitha Morissette
Barton, Koepp and CroninTGAL5Y8F(821) 885-8434Norman$43,550,293.98Marc Dibbert
Bashirian - HamillZS1XZLDL(792) 135-0145Baltimore$15,916,182.51Alexie Dach
Bashirian - WeberOC5PYOJC(492) 789-5504Cranston$23,269,960.31Emmet Krajcik
Baumbach and SonsX8V8TZRX(670) 937-4364Ann Arbor$4,319,879.33Charity Sawayn
Baumbach, Maggio and TurnerV24ZA492(509) 251-9848Orlando$25,479,745.81Cali McClure
Beahan IncB9XXSIJM(262) 429-4179Sioux Falls$45,854,197.84Tressa Graham
Berge and SonsWO8OIGR6(165) 108-8947Topeka$40,560,550.52Delphine Jerde
Bergnaum GroupT3KB03RE(381) 148-7032Rapid City$32,406,150.23Dakota Ward
Bergstrom and SonsG99XNRDY(182) 902-0206Casper$48,880,601.83Grant Funk
Bergstrom, Bins and FlatleyJ1TXPJ9I(409) 160-0657Pittsburgh$21,005,421.54Blanche Gulgowski
Blanda - Terry4L8RSVL9(190) 468-0033Vancouver$33,567,160.56Fausto Pagac
Bode LLCF5IR66HK(386) 496-6921Detroit$1,800,033.15Kane Pollich
Bogisich, Mitchell and BalistreriPCVDL8PS(267) 567-6606Manchester$10,336,491.66Esperanza Luettgen
Borer - MohrLHI1SSVO(070) 539-8404Providence$36,092,236.14Emelia Murray
Botsford - Baumbach8JZK18K6(389) 188-6100Cranston$318,662.34Maria Runte
Botsford, Schroeder and KassulkeU39NNCOJ(960) 101-3753Sacramento$19,016,940.28Raphael Bergnaum
Boyer - SchaeferEFJQXML0(473) 115-3249Fort Wayne$48,601,111.30Moses Metz
Boyle, Zulauf and LakinXXRF6GXU(028) 071-4090Helena$31,856,728.91Federico Hamill
Brekke LLCUCLPTB19(795) 385-0349Norman$25,296,518.98Noemie Stracke
Brekke, Feeney and JohnsVMGNL1M7(203) 861-9656Charleston$13,632,447.58Kristin Koch
Brown, Rohan and MayerEMOSYGOI(479) 235-6497Fairbanks$49,780,735.02Phoebe Legros
Cassin, Kassulke and Schaefer5KSSVNW7(852) 978-3789Flagstaff$29,260,487.45Dedrick Thiel
Christiansen - MetzGSZJ1ODJ(183) 163-4723Reno$25,227,451.85Hattie Schuster
Cole, Tillman and LangworthY1JNB47Q(289) 893-2488Dover$13,838,171.56Jody Rohan
Connelly, Cassin and Ledner69QI6R89(507) 196-5103Wilmington$28,880,982.86Berneice Stracke
Considine Inc1ZGMEMAV(013) 094-8065Anchorage$6,796,633.66Guido Hagenes
Considine, Wilkinson and SpencerHK18ZLOO(772) 222-6147Jersey City$8,490,647.93Douglas Prosacco
Cormier - HettingerJFLKC0CK(508) 849-8368Tucson$14,771,052.63Nola Hand
Cremin - Hodkiewicz4D30N08W(757) 968-3487Fort Wayne$27,239,848.21America Harber
Cruickshank - PollichP3JT5LVY(048) 698-7364Santa Fe$32,195,480.36Joey Reilly
Cruickshank, Auer and SchoenTV06VSEA(516) 585-5831Sioux Falls$3,560,781.82Tiana Kiehn
Cummerata GroupAJYD1N4I(429) 577-7392Minneapolis$20,579,317.84Gustave Zboncak
Daniel LLCADF0WMN9(371) 118-7804Madison$49,497,674.02Francisco Smitham
Denesik, Skiles and Beier2ZMSATDW(716) 332-8853Louisville$25,958,417.48Dock Aufderhar
Dibbert LLC4WT0EDV0(343) 448-8435Huntington$24,379,660.89Elroy Leuschke
Dickinson IncC7SI8E20(429) 201-5173Dover$44,819,510.87Milton Ledner
Dietrich and SonsLAEDD52L(189) 560-2423Hartford$3,522,175.29Heath Kunde
Donnelly - Sanford8SW26RNC(738) 522-0182Fort Wayne$37,819,037.93Betsy King
Dooley - NitzscheNUCMFF7S(574) 958-0441Charleston$11,318,528.04Roman Dietrich
Durgan and SonsCKOSAHML(332) 942-8325Saint Paul$5,901,769.33Connor Marks
Ebert - WymanHJBQWXIR(753) 557-3136Los Angeles$15,782,605.89Zetta Nolan

ユーザーが何を実行できるかを尋ねること

ボタンは GET /api/permissions/operationsを尋ね、サインインユーザーだけが答えます:実行するすべての操作、またはあなたが名前を挙げた操作のみ、それぞれのリクエストが何を運ぶか、指し示すべきレコードを含みます。あなたのUIはBlazorの IOperationAccessCache や IPowerPortalsProService.GetOperationAccessForCurrentUserAsync 、Reactの useOperationAccess や ppp.retrieveOperationAccessAsync で同じ質問を行えます。

反応してください ブレイザー

OperationButton クラス

パラメータ

名称
種類
デフォルト
概要
AppearanceButtonAppearance?
ボタンの見た目。
BusyMessagestring?
操作が実行されている間にオーバーレイに表示される内容;一般的な「作業中...」設定されていない場合。
ChildContentRenderFragment?
ボタンの内容が、 OperationButtonBase.Labelの代わりに。
ConfirmationMessagestring?
操作開始前にユーザーが答える質問 — 「この請求書の返金を出しますか?」— あるいはすぐに実行する null 。
ContextRecordContext?
ボタンが送信する録音コンテキスト。ボタンが Components.RecordContext。
Disabledbool
False
ユーザーが実行する際にはボタンを無効にします。
GetParametersAsyncFunc<Task<IReadOnlyDictionary<string, ColumnValueBase>>>?
ボタンをクリックしたときにパラメータを集めます — 例えばダイアログから — に追加 OperationButtonBase.Parameters。 null 返すとクリックがキャンセルされます。彼らは知られているだけです 一度クリックされた場合、ユーザーが操作を実行できるかどうかは、その前に操作を行えるかどうかが判断されます。 サーバーは彼らと一緒にリクエストを判断します。
IconIcon?
テキストの前に表示されたアイコン。
Labelstring?
ボタンのテキストだ。
Operation*string
その作戦名は登録されている。
ParametersIReadOnlyDictionary<string, ColumnValueBase>?
すべてのリクエストで名前で送られるパラメータです。レコードパラメータは LookupValue;その名前を付けるレコードは、ユーザーが 操作の登録が必要で、そうでなければボタンは許可されていないとみなされます。
RecordTableRecordReference?
記録は参照として OperationButtonBase.RecordParameter送られました。設定されなかった場合、 ボタンが置かれた Components.RecordContext (または OperationButton.Context)の記録が送信されます。 一度救われた。
RecordParameterstring?
レコードが送信されるパラメータ — 例えばターゲット: Components.OperationButtonの OperationButton.Record またはフォームレコード、選択された各行 Components.OperationGridButton。
RefreshRecordbool
True
単独で実行された操作(ホストのコード)が、フォームのレコードを読み返すかどうか 変更された可能性があるため、実行されます。デフォルトでオンです。フォームの に乗ったDataverse操作 Reactと同様に、セーブはセーブとともに読み返されます。
Tooltipstring?
ポインターがボタンに乗っているときに示されています。
WhenNotAllowedOperationButtonBehavior
Hide
ユーザーが操作できないボタンの動作。デフォルトで隠れています。
名称: Appearance
種類: ButtonAppearance?
概要: ボタンの見た目。
名称: BusyMessage
種類: string?
概要: 操作が実行されている間にオーバーレイに表示される内容;一般的な「作業中...」設定されていない場合。
名称: ChildContent
種類: RenderFragment?
概要: ボタンの内容が、 OperationButtonBase.Labelの代わりに。
名称: ConfirmationMessage
種類: string?
概要: 操作開始前にユーザーが答える質問 — 「この請求書の返金を出しますか?」— あるいはすぐに実行する null 。
名称: Context
種類: RecordContext?
概要: ボタンが送信する録音コンテキスト。ボタンが Components.RecordContext。
名称: Disabled
種類: bool
デフォルト: False
概要: ユーザーが実行する際にはボタンを無効にします。
名称: GetParametersAsync
種類: Func<Task<IReadOnlyDictionary<string, ColumnValueBase>>>?
概要: ボタンをクリックしたときにパラメータを集めます — 例えばダイアログから — に追加 OperationButtonBase.Parameters。 null 返すとクリックがキャンセルされます。彼らは知られているだけです 一度クリックされた場合、ユーザーが操作を実行できるかどうかは、その前に操作を行えるかどうかが判断されます。 サーバーは彼らと一緒にリクエストを判断します。
名称: Icon
種類: Icon?
概要: テキストの前に表示されたアイコン。
名称: Label
種類: string?
概要: ボタンのテキストだ。
名称: Operation*
種類: string
概要: その作戦名は登録されている。
名称: Parameters
種類: IReadOnlyDictionary<string, ColumnValueBase>?
概要: すべてのリクエストで名前で送られるパラメータです。レコードパラメータは LookupValue;その名前を付けるレコードは、ユーザーが 操作の登録が必要で、そうでなければボタンは許可されていないとみなされます。
名称: Record
種類: TableRecordReference?
概要: 記録は参照として OperationButtonBase.RecordParameter送られました。設定されなかった場合、 ボタンが置かれた Components.RecordContext (または OperationButton.Context)の記録が送信されます。 一度救われた。
名称: RecordParameter
種類: string?
概要: レコードが送信されるパラメータ — 例えばターゲット: Components.OperationButtonの OperationButton.Record またはフォームレコード、選択された各行 Components.OperationGridButton。
名称: RefreshRecord
種類: bool
デフォルト: True
概要: 単独で実行された操作(ホストのコード)が、フォームのレコードを読み返すかどうか 変更された可能性があるため、実行されます。デフォルトでオンです。フォームの に乗ったDataverse操作 Reactと同様に、セーブはセーブとともに読み返されます。
名称: Tooltip
種類: string?
概要: ポインターがボタンに乗っているときに示されています。
名称: WhenNotAllowed
種類: OperationButtonBehavior
デフォルト: Hide
概要: ユーザーが操作できないボタンの動作。デフォルトで隠れています。

イベント

名称
種類
概要
OnCompletedEventCallback<OperationCompletedEventArgs>
作戦が終わった後に、その答えとともに提起された。
OnErrorEventCallback<Exception>
操作が失敗すると、エラーダイアログの代わりにボタンが表示されます。
名称: OnCompleted
種類: EventCallback<OperationCompletedEventArgs>
概要: 作戦が終わった後に、その答えとともに提起された。
名称: OnError
種類: EventCallback<Exception>
概要: 操作が失敗すると、エラーダイアログの代わりにボタンが表示されます。
反応してください ブレイザー

OperationGridButton クラス

パラメータ

名称
種類
デフォルト
概要
AppearanceButtonAppearance?
ボタンの見た目。
BusyMessagestring?
操作が実行されている間にオーバーレイに表示される内容;一般的な「作業中...」設定されていない場合。
ConfirmationMessagestring?
操作開始前にユーザーが答える質問 — 「この請求書の返金を出しますか?」— あるいはすぐに実行する null 。
Disabledbool
False
ユーザーが実行する際にはボタンを無効にします。
GetParametersAsyncFunc<Task<IReadOnlyDictionary<string, ColumnValueBase>>>?
ボタンをクリックしたときにパラメータを集めます — 例えばダイアログから — に追加 OperationButtonBase.Parameters。 null 返すとクリックがキャンセルされます。彼らは知られているだけです 一度クリックされた場合、ユーザーが操作を実行できるかどうかは、その前に操作を行えるかどうかが判断されます。 サーバーは彼らと一緒にリクエストを判断します。
IconIcon?
テキストの前に表示されたアイコン。
Labelstring?
ボタンのテキストだ。
Operation*string
その作戦名は登録されている。
ParametersIReadOnlyDictionary<string, ColumnValueBase>?
すべてのリクエストで名前で送られるパラメータです。レコードパラメータは LookupValue;その名前を付けるレコードは、ユーザーが 操作の登録が必要で、そうでなければボタンは許可されていないとみなされます。
RecordParameterstring?
レコードが送信されるパラメータ — 例えばターゲット: Components.OperationButtonの OperationButton.Record またはフォームレコード、選択された各行 Components.OperationGridButton。
Tooltipstring?
ポインターがボタンに乗っているときに示されています。
VisibilityBehaviorGridButtonBehavior?
ボタンが表示されると、選択によって。レコードパラメータを用いて、1つ以上選択した場合 列;いつも、無。
WhenNotAllowedOperationButtonBehavior
Hide
ユーザーが操作できないボタンの動作。デフォルトで隠れています。
名称: Appearance
種類: ButtonAppearance?
概要: ボタンの見た目。
名称: BusyMessage
種類: string?
概要: 操作が実行されている間にオーバーレイに表示される内容;一般的な「作業中...」設定されていない場合。
名称: ConfirmationMessage
種類: string?
概要: 操作開始前にユーザーが答える質問 — 「この請求書の返金を出しますか?」— あるいはすぐに実行する null 。
名称: Disabled
種類: bool
デフォルト: False
概要: ユーザーが実行する際にはボタンを無効にします。
名称: GetParametersAsync
種類: Func<Task<IReadOnlyDictionary<string, ColumnValueBase>>>?
概要: ボタンをクリックしたときにパラメータを集めます — 例えばダイアログから — に追加 OperationButtonBase.Parameters。 null 返すとクリックがキャンセルされます。彼らは知られているだけです 一度クリックされた場合、ユーザーが操作を実行できるかどうかは、その前に操作を行えるかどうかが判断されます。 サーバーは彼らと一緒にリクエストを判断します。
名称: Icon
種類: Icon?
概要: テキストの前に表示されたアイコン。
名称: Label
種類: string?
概要: ボタンのテキストだ。
名称: Operation*
種類: string
概要: その作戦名は登録されている。
名称: Parameters
種類: IReadOnlyDictionary<string, ColumnValueBase>?
概要: すべてのリクエストで名前で送られるパラメータです。レコードパラメータは LookupValue;その名前を付けるレコードは、ユーザーが 操作の登録が必要で、そうでなければボタンは許可されていないとみなされます。
名称: RecordParameter
種類: string?
概要: レコードが送信されるパラメータ — 例えばターゲット: Components.OperationButtonの OperationButton.Record またはフォームレコード、選択された各行 Components.OperationGridButton。
名称: Tooltip
種類: string?
概要: ポインターがボタンに乗っているときに示されています。
名称: VisibilityBehavior
種類: GridButtonBehavior?
概要: ボタンが表示されると、選択によって。レコードパラメータを用いて、1つ以上選択した場合 列;いつも、無。
名称: WhenNotAllowed
種類: OperationButtonBehavior
デフォルト: Hide
概要: ユーザーが操作できないボタンの動作。デフォルトで隠れています。

イベント

名称
種類
概要
OnCompletedEventCallback<OperationCompletedEventArgs>
作戦が終わった後に、その答えとともに提起された。
OnErrorEventCallback<Exception>
操作が失敗すると、エラーダイアログの代わりにボタンが表示されます。
名称: OnCompleted
種類: EventCallback<OperationCompletedEventArgs>
概要: 作戦が終わった後に、その答えとともに提起された。
名称: OnError
種類: EventCallback<Exception>
概要: 操作が失敗すると、エラーダイアログの代わりにボタンが表示されます。