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
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Utilizzare politiche di resiliency con Azure Container App
Usare le variabili per personalizzare gli stili CSS
Utilizzare la session affinity con Azure Container Apps
Paginare i risultati con QuickGrid in Blazor
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Utilizzare Tailwind CSS all'interno di React: installazione
Inizializzare i container in Azure Container Apps
Evitare la script injection nelle GitHub Actions
Generare token per autenicarsi sulle API di GitHub
Utilizzare i primary constructor in C#
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core