Il controllo GridView di ASP.NET consente di tenere selezionato un elemento della griglia, impostando la proprietà SelectedIndex.
Un fastidioso effetto collaterale, dovuto al modo in cui il controllo gestisce questo aspetto, è che l'indice, erroneamente, è mantenuto anche in caso di paginazione sulle pagine successive. L'effetto che si ottiene è quello che, cambiando pagina, verrà selezionata nuovamente la riga relativa all'indice e selezionata sulla pagina precedente, anche se in realtà la riga evidenziata non dovrebbe essere quella della pagina corrente.
La soluzione, introdotta inizialmente con il SP1 di ASP.NET 3.5, ma applicabile solo con Dynamic Data, con ASP.NET 4.0 è stata estesa a GridView e consiste nell'uso della proprietà EnablePersistedSelection, come di seguito riportato:
<asp:GridView runat="server" ... EnablePersistedSelection="true"> ... </asp:GridView>
Grazie a questa proprietà, il controllo userà una chiave, che è composta dall'effettivo numero di riga rispetto a tutti i dati, e quindi, nel caso di cambio pagina, non selezionerà nuovamente la riga usando l'indice relativo, ma userà quello globale, funzionando correttamente.
Questa proprietà è offerta attraverso l'interfaccia IDataBoundListControl, del namespace System.Web.UI.WebControls, che al momento è implemetata solo da GridView, ma, potenzialmente, potrebbe essere sfruttata come base per costruire controlli custom che sfruttino la medesima tecnica.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare tutorial dinamici con la Universal Windows Platform
Diagnosticare l'uso elevato di CPU nelle Azure Web App
Abilitare lo scrolling virtuale su una lista con molti elementi con Angular CDK
Usare la dependency injection built-in nelle Azure Function
Realizzare una griglia con elementi a dimensione dinamica nella Universal Windows Platform
Creare librerie di View riutilizzabili con Razor Class Library in ASP.NET Core
Dare temporaneamente accesso ad un blob di Azure Storage
Copiare container di Azure Storage tra più account con AzCopy
Migrare un'application ASP.NET Core 2.1 alla versione 2.2
Utilizzare servizi applicativi durante la validazione in ASP.NET Core
Restringere l'accesso tramite IP ad Azure App Service
Sincronizzare file tra on-premise e cloud con Azure File Sync