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
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Testare l'invio dei messaggi con Event Hubs Data Explorer
Utilizzare gRPC su App Service di Azure
Introduzione alle Container Queries
Creare una libreria CSS universale: Nav menu
Introduzione ai web component HTML
Ricevere notifiche sui test con Azure Load Testing
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Recuperare l'ultima versione di una release di GitHub
Disabilitare automaticamente un workflow di GitHub (parte 2)
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Loggare le query più lente con Entity Framework