Impostare il valore dei parametri utilizzati dal controllo SqlDataSource runtime.
Il WebControl SqlDataSource esegue le classiche operazioni CRUD mediante query sul database, che possono essere parametrizzate e recuperare il proprio valore da controlli, Querystring, Session e altro.
In alcuni casi il valore del parametro potrebbe ad esempio dipendere dal valore di più di un controllo ed in casi come questi è necessario impostare il paramentro in maniera programmatica.
Creiamo un semplice SqlDataSource che seleziona alcune informazioni dalla tabella Customer.
<asp:SqlDataSource ID="mySqlDataSource" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="SELECT [ID],[Name], [Surname], [Birthday] FROM [Customer] WHERE ([ID] = @ID)" OnSelecting="MySqlDataSource_Selecting"> <SelectParameters> <asp:Parameter DefaultValue="" Name="ID" Type="Int32" /> </SelectParameters> </asp:SqlDataSource> Il trucco consiste nell'aggiungere un handler per l'evento Selecting, che si verifica prima che il DataSource control effettui la query di selezione: [code lang="c#"]protected void MySqlDataSource_Selecting(object sender, SqlDataSourceSelectingEventArgs e) { int _id = 0; //provo a recuperare il parametro tramite querystring int.TryParse(Request.QueryString["id"], out _id); //altrimenti provo con l'input inserito dall'utente if (_id == 0) { int.TryParse(myTextBox.Text, out _id); } //imposto il valore del parametro. e.Command.Parameters["@ID"].Value = _id; }
Nel metodo MySqlDataSource_Selecting se il tentativo di recuperare l'id del custumer tramite QueryString dovesse fallire, viene eseguito un altro tentativo utilizzando l'input inserito dall'utente.
Analogamente è possibile impostare il valore dei parametri passati per le operazioni di modifica, aggiornamento e eliminazione, intercettando i relativi eventi.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
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
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Cache policy su route groups di Minimal API in ASP.NET Core 7
Taggare la output cache in base al routing in ASP.NET Core
Catturare la telemetria degli eventi di output cache in ASP.NET Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Short-circuiting della Pipeline in ASP.NET Core
Load test di ASP.NET Core con k6
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet