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
Le novità di Angular: i miglioramenti alla CLI
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Generare file per il download da Blazor WebAssembly
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente
Generare file PDF da Blazor WebAssembly con iText
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Utilizzare la session affinity con Azure Container Apps
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON