Gestire una DropDown in una Form Power Apps con SQL
Se si usa Power Apps con SharePoint Online i campi di tipo ComboBox, ad esempio Choice o Lookup, vengono correttamente gestiti quando si usa il controllo Forms.
La stessa cosa non avviene con un connettore a SQL Server dove le relazioni uno a molti non vengono risolte automaticamente, vanno configurate a mano.
Questo perché la DropDown non si basa sul campo chiave della tabella (TeachingDetailId), ma solo con il valore visualizzato (Name)quindi la proprietà Default va impostata con un espressione di questo tipo usando la funzione LookUp
In questo caso nella proprietà Items della DropDown non si può usare l'espressione Parent.AllowedValues ma bisogna impostarla direttamente
la proprietà AllowedValues può essere lasciata blank.
La stessa cosa non avviene con un connettore a SQL Server dove le relazioni uno a molti non vengono risolte automaticamente, vanno configurate a mano.
Aggiunta campo
Ad esempio in una situazione come questa, collegando il controllo Forms alla tabella Questionse aggiungendo il campo TeachingDetailId questo viene riconosciuto come un campo di tipo numerico, senza tener contro della relazione con la tabella TeachingDetailsil campo viene visualizzato come una TextBox che accetta solo numeri.Modalità di visualizzazione
Fortunatamente è possibile cambiare la modalità di visualizzazione cliccando sui tre puntini (more Actions) scegliendo il template Allowed valuesin questo modo il campo verrà visualizzato come un controllo di tipo DropDownanche se non ancora configurato.Configurazione DataCard
Per completare la configurazione è necessario fare l'unlock della DataCard in modo da poter modificare le proprietà Update e AllowedValuesinserendo i valori corretti in base alla sorgente datiin particolare AllowedValues dovrà contenere la formula che ricava i dati da visualizzare dalla tabella TeachingDetailsPower Apps
AllowedValues = SortByColumns(TeachingDetails, "Name", Ascending)
Va prima aggiunta la tabella TeachingDetails alle sorgenti dati disponibili.
mentre Updates dovrà contenere il campo chiave della tabella preso dal controllo di tipo DropDown dalla DataCard correntePower Apps
Updates = DataCardValue33.Selected.TeachingDetailId
Configurazione DropDown
In ultimo va configurata la DropDown (DataCardValue33) per mostrare nell'elenco il campo desiderato, in questo caso NameRisultato
Il risultato è questoe sul database verrà salvato l'Id corrispondente.Aggiornamento (Default)
Attenzione nell'esempio riportato sopra non funziona la valorizzazione della DropDown quando viene letto il valore esistente dal database (modalità di edit).Questo perché la DropDown non si basa sul campo chiave della tabella (TeachingDetailId), ma solo con il valore visualizzato (Name)quindi la proprietà Default va impostata con un espressione di questo tipo usando la funzione LookUp
Power Apps
Default = LookUp(TeachingDetails, TeachingDetailId = ThisItem.TeachingDetailId).Name
Attenzione, se si hanno delle voci duplicate identiche non funziona, vanno rese univoche lo voci visualizzate .
In alcuni caso ho dovuto impostare la proprietà Default direttamente sulla DropDown anziché sulla DataCard
Aggiornamento 2 (AllowedValues)
Sembrano esserci problemi quando la chiave della tabella non è di tipo intero ma è, ad esempio, stringa.In questo caso nella proprietà Items della DropDown non si può usare l'espressione Parent.AllowedValues ma bisogna impostarla direttamente
Power Apps
Items = SortByColumns(TeachingDetails, "Name", Ascending)