RowNumber in Power Apps
In Power Apps non è disponibile una funzione RowNumber ma si può comunque aggirare il problema con del codice custom.Nell'esempio si vede, a sinistra, una lista SharePoint con visualizzati i campi ID e Title ordinati per Title.
a destra si vede la collection TableRowNumber con aggiunto il campo RowNumber
Il cuore del codice è la funzione ForAll che ciclando su tutti i record di _TmpTable crea la nuova collection TableRowNumber (Collect), aggiungendo, ad ogni iterazione, una nuova riga con un nuovo campo (AddColumns) RowNumber contenente il conteggio delle righe esistenti fino a quel momento (CountRows):
Power Apps
GallerySx.Items = SortByColumns(TodoList, "Title", Ascending)
Power Apps
GalleryDx.Items = SortByColumns(TableRowNumber, "Title", Ascending)
Aggiunta RowNumber
La creazione della collection avviene alla pressione del pulsante Update tramite questo codicePower Apps: Crea collection con RowNumber
ButtonUpdate.OnSelect =
// per praticità, salvo la query con l'ordinamento desiderato _TmpTable
ClearCollect(
_TmpTable,
SortByColumns(
TodoList,
"Title",
Ascending
)
);
// creo una nuova lista ordinata con RowNumber e l'Id
Clear(TableRowNumber);
ForAll(
_TmpTable,
Collect(
TableRowNumber,
Last(
FirstN(
AddColumns(
_TmpTable,
"RowNumber",
CountRows(TableRowNumber) + 1
),
CountRows(TableRowNumber) + 1
)
)
)
);
/* faccio pulizia di quello che non serve più */
Clear(_TmpTable);
Il cuore del codice è la funzione ForAll che ciclando su tutti i record di _TmpTable crea la nuova collection TableRowNumber (Collect), aggiungendo, ad ogni iterazione, una nuova riga con un nuovo campo (AddColumns) RowNumber contenente il conteggio delle righe esistenti fino a quel momento (CountRows):
Power Apps: Numerazione righe
ForAll(
_TmpTable,
/* parte di codice eseguita per ogni riga di _TmpTable */
Collect(
TableRowNumber,
Last(
FirstN(
AddColumns(
_TmpTable,
"RowNumber",
CountRows(TableRowNumber) + 1
),
CountRows(TableRowNumber) + 1
)
)
)
);