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
Implementare un blocco territoriale in ASP.NET Core
Personalizzare ASP.NET Core Identity
Impersonare un utente fittizio per un'applicazione ASP.NET Core
Una chat con ASP.NET Core e WebSockets
Scenari complessi di validazione con FluentValidation su ASP.NET Core
Migrare un'application ASP.NET Core 2.1 alla versione 2.2
Usare IP Filtering per regolare l'accesso a una applicazione ASP.NET Core
Verificare lo stato di funzionamento dell'applicazione con ASP.NET Core 2.2
Sfruttare la dependency injection in un Filter di ASP.NET Core
Anteprima di ASP.NET Core 2.1 - Parte 1
Autorizzazione basata su policy in ASP.NET Core
Costruire un client HTTP tipizzato con Refit e IHttpClientFactory in ASP.NET Core 2.1