Demo.New
Crea un nuovo item.
L’applicazione consumer usa SharePointBridge.Current come entry point e accede a contesto, REST, CSOM, Host API, ListView, routing e diagnostica attraverso una Public API session-scoped. Per le funzioni CRUD può inoltre utilizzare il provider ADO.NET GDG.SharePoint.ADOProvider.
| Area | API | Uso |
|---|---|---|
| Context | Context, Token, Appearance, Host | Snapshot immutabili del contesto sessione. |
| REST server-side | Rest | REST same-origin con refresh token e retry 401. |
| CSOM | CreateClientContextAsync / ExecuteQueryAsync | ClientContext autenticato con token corrente. |
| Host interaction | HostApi.Navigation / Dialogs / Notifications / Layout | Comandi eseguiti da SPFx nella pagina ospite. |
| Host HTTP | SharePointApi / Graph / CustomApi | SPHttpClient, MSGraphClientV3 e AadHttpClient. |
| ListView | ListView | Stato tipizzato, LastAction e source round-trip capability-driven. |
| Routing locale | Routes | Route semantiche nella sessione Wisej. |
| Routing pagina | HostApi.ApplicationRouting | Dispatch verso uno o più Host registrati nella pagina. |
| Diagnostics | Diagnostics.GetSnapshot() | Snapshot point-in-time senza access token. |
Accesso dati per il CRUD. Le applicazioni possono implementare le operazioni Create, Read, Update e Delete tramite CSOM, REST oppure tramite il provider ADO.NET GDG.SharePoint.ADOProvider.
Gli esempi seguenti mostrano il modello di programmazione previsto dalla baseline tecnica.
using GDGSPFxBridge; SharePointBridge.Initialize(options => { options.ApplyAdaptiveTheme = true; options.ThrowOnDispatchError = false; });
var sp = SharePointBridge.Current; var siteUrl = sp.Context?.Web?.AbsoluteUrl; var login = sp.Context?.User?.LoginName; var list = sp.Context?.List?.Title;
var sp = SharePointBridge.Current; using (var ctx = await sp.CreateClientContextAsync()) { ctx.Load(ctx.Web); await sp.ExecuteQueryAsync(ctx); var title = ctx.Web.Title; }
var confirmed = await SharePointBridge.Current .HostApi.Dialogs .ConfirmAsync("Save item", "Confirm the update?", "Save", "Cancel"); if (confirmed) await SharePointBridge.Current.HostApi.Dialogs .AlertAsync("Item saved.");
Perché HostApi? Il dialogo viene mostrato dal layer SPFx/SharePoint, mantenendo l’esperienza visiva coerente con la pagina ospite.
var bridge = SharePointBridge.Current; bridge.Routes.Map( "Demo.Edit", "demo/items/{id:int}/edit", async context => { var id = context.GetRouteValue<int>("id"); await pageEdit.LoadItemAsync(id, null, context); pageEdit.Show(); }); bridge.Routes.Start();
var api = SharePointBridge.Current.SharePointApi; var itemUrl = "_api/web/lists/getbytitle('SPFXBridgeTest')/items(42)"; // Read var read = await api.GetAsync(itemUrl + "?$select=Id,Title"); // Update con ETag var update = await api.PatchWithEtagAsync( itemUrl, new { Title = "Updated from Wisej" }, "*"); // Delete con ETag var deleted = await api.DeleteWithEtagAsync(itemUrl, "*");
La demo documentata usa SharePointApi e REST, con ETag per update/delete, dialoghi HostApi e verifica del risultato con read-back. Nelle applicazioni reali le funzioni CRUD possono essere sviluppate indifferentemente tramite CSOM, REST oppure tramite il provider ADO.NET GDG.SharePoint.ADOProvider.
Crea un nuovo item.
Carica e aggiorna un item esistente tramite id tipizzato.
Visualizza item e metadata SharePoint.
Conferma, cancella e verifica l’esito HTTP 404.
La pagina SharePoint completa non viene ricaricata dopo una mutazione: questo preserva Host e List Actions. Il refresh della sola Microsoft ListView resta vincolato alle capability pubblicamente supportate da SPFx.
La toolchain SPFx serve alla costruzione del package Bridge quando cambiano i sorgenti/runtime SPFx; lo sviluppo dell’applicazione .NET consumer rimane separato.
| Artefatto | Quando ricostruirlo |
|---|---|
| WisejSPFX | Quando cambia la demo/applicazione Wisej. |
| GDGSPFxBridge.dll | Quando cambia la libreria .NET pubblica/interna. |
| GDG-SPFx-Bridge .sppkg | Solo quando cambiano sorgenti/runtime SPFx. |
Baseline SPFx documentata: SPFx 1.23.2, Node >= 22.14 < 23, TypeScript 5.8.x, Heft e workflow Docker ufficiale del progetto.