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
Impostare la content-visibility in CSS per ottimizare il rendering iniziale di una pagina
Creare una file based app con C#
Utilizzare il Null conditional assignment di C# 14
Configurare OpenAI in .NET Aspire
Creare un agente A2Acon Azure Logic Apps
Configuratione e utilizzo .NET Aspire CLI
Integrare modelli AI in un workflow di GitHub
Usare i generics di C# con la clausola nameof in modo semplificato
Response streaming con Blazor e .NET 10
Come automatizzare il download dei report di billing da GitHub Enterprise
Mappare una complex property di una entity su un campo JSON
Esporre un server MCP esistente con Azure API Management
I più letti di oggi
- Global Azure 2026 - ASPItalia.com - Milano
- L'agenda di #GlobalAzure 2026 by ASPItalia.com è pronta: da #AKS a #AIFoundry, passando per #MCP, #Fabric e tanto altro.Ci vediamo il 16 aprile a Milano! https://aspit.co/globalazure-26
- Future Dev Day - Milano
- Il nuovo persistent state in Blazor
- Eseguire i pre-commit hook di git con dependabot




