Impostare programmaticamente il valore dei parametri di un controllo DataSource

di Marco Leoncini, in ASP.NET 2.0, DataBinding, SqlDataSource,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi