asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 4156
ASPCode.it - Store

  > > Tips

DataGrid: rilevare la riga selezionata
di Paolo Capitani

Data di pubblicazione: 03/02/2005        Voto della community: 2,78 (Votanti: 3)

Quando si lavora con un DataGrid a cui si assegna una certa "interattivitā", č necessitā comune poter rilevare l'eventuale riga di dati selezionata con il click del mouse ed estrarre dall'origine di dati (es.:tabella di un database) il contenuto completo del record selezionato. A tal scopo č sufficiente gestire l'evento OnItemCommand, che viene lanciato ogni volta che viene eseguita un'operazione da parte dell'utente sul datagrid stesso, ed associare ad esso una semplice porzione di codice che consente di estrarre il valore della chiave primaria del record selezionato.
Nel frammeno di codice che segue sono riportate due funzioni che consentono di ottenere il suddetto risultato:

// ************************************************************
// override dell'evento OnInit della pagina
// ************************************************************
override protected void OnInit(EventArgs e)
{
  this.dg1.DataKeyField = "TABELLA_ID";
  this.dg1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dg1_ItemCommand);

  base.OnInit(e);
}
// ************************************************************
// gestione del click su una riga del DataGrid
// ************************************************************
private void dg1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
  int sel = (int)((DataGrid)source).DataKeys[e.Item.ItemIndex];

  switch(e.CommandName)
  {
    case "Edit":
      //...
      break;
  }
}
// ************************************************************

Supponendo che il datagrid della nostra pagina web sia identificato con ID="dg1" dovremo innanzitutto indicare quale campo della nostra origine di dati assolverā la funzione di chiave primaria dei dati; in questo esempio il campo in questione č TABELLA_ID; la seconda operazione sarā quella di associare all'evento OnItemCommand del DataGrid una funzione che andremo ad implementare e che chiameremo dg1_ItemCommand. Eseguiamo entrambe queste operazioni nel momento in cui la pagina viene inizializzata; a tal scopo effettueremo l'override della funzione OnInit della classe Page (che č la classe da cui la nostra pagina web "discende").
Come accennato, nella funzione dg1_ItemCommand rileviamo il valore della chiave primaria della riga selezionata e lo memorizziamo nella variabile intera sel: il valore e.Item.ItemIndex contiene l'indice della riga cliccata (secondo la "numerazione" di righe presenti nel datagrid); attraverso tale indice possiamo ottenere il valore della chiave primaria contenuto nell'array di valori di chiave primaria DataKeys del nostro datagrid.
Infine, a seconda delle nostre esigenze, possiamo successivamente gestire il tipo di comando associato all'evento di click sul datagrid (modifica, aggiornamento, selezione, ecc.).




Utenti connessi: 4156