#877 - Impostare programmaticamente il valore dei parametri di un controllo DataSource

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:

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.


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC