Impostare programmaticamente il valore dei parametri di un controllo DataSource

di , 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

Impostare programmaticamente il valore dei parametri di un controllo DataSource (#877)
| Condividi su: Twitter, Facebook, LinkedIn, Google+

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