Il controllo LinqDataSource ci permette di avvalerci della funzionalità di LINQ all'interno di una pagina ASP.NET ed effettuare query su fonti di dati enumerabili, come è possibile leggere dall'articolo di Andrea Zani sui nuovi controlli di ASP.NET 3.5.
Oltre alle note proprietà per identificare la classe di "contesto", la tabella (o proprietà pubblica) contenente le informazioni da selezionare ed eventuali opzioni di selezione, ordinamento e raggruppamento, il controllo LinqDataSource ci offre due eventi all'interno dei quali possiamo aggiungere un meccanismo personalizzato di gestione dei dati all'interno della cache della pagina.
Gli eventi in questione sono Selecting e Selected: il primo viene scatenato prima che venga eseguita l'operazione di select, mentre il secondo viene scatenato dopo che la medesima operazione è stata conclusa. L'oggetto che dobbiamo inserire in cache sarà la fonte di dati vera e propria dalla quale il controllo di selezione effettuerà la sua lettura, così da velocizzare le richieste successive alla pagina.
<asp:LinqDataSource ID="linqDSCache" runat="server" ContextTypeName="NorthwindDataContext" TableName="Customers" onselected="linqDSCache_Selected" onselecting="linqDSCache_Selecting" /> <asp:DropDownList ID="ddlCache" runat="server" DataSourceID="linqDSCache" DataTextField="ContactName" DataValueField="CustomerID" />
public partial class _Default : System.Web.UI.Page { private const string cachekey = "LinqDataSourceCacheSample"; protected void Page_Load(object sender, EventArgs e) {} protected void linqDSCache_Selecting(object sender, LinqDataSourceSelectEventArgs e) { object source = Cache[cachekey]; if (source == null) return; e.Result = source; } protected void linqDSCache_Selected(object sender, LinqDataSourceStatusEventArgs e) { object source = Cache[cachekey]; if (source != null) return; Cache.Insert(cachekey, e.Result, null, DateTime.Now.AddSeconds(30), System.Web.Caching.Cache.NoSlidingExpiration); } }
Quindi, prima dell'operazione di selezione viene prelevata la fonte di dati (se presente) dalla cache e viene eventualmente passata al controllo LinqDataSource, mentre alla fine della selezione stessa, tale oggetto viene inserito in cache (solo se non già presente).
La fonte di dati ci viene data dalla proprietà Result della classe LinqDataSourceSelectEventArgs, argomento dell'evento Selecting e viene successivamente salvato sempre tramite una proprietà chiamata Result, ma della classe LinqDataSourceStatusEventArgs, argomento dell'evento Selected.
Per approfondimenti:
I nuovi controlli di ASP.NET 3.5: LinqDataSource, ListView e DataPager
https://www.aspitalia.com/articoli/asp.net3.5/linqdatasource-listview-datapager.aspx
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Short-circuiting della Pipeline in ASP.NET Core
Load test di ASP.NET Core con k6
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Effettuare il binding di date in Blazor
Implementare il throttling in ASP.NET Core
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- Definire stili a livello di libreria in Angular
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzazione dei block template in Angular 17
- Disabilitare automaticamente un workflow di GitHub (parte 2)