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.