ciao a tutti..
ho una gridview (riempita con dati presi dal db), ho aggiunto la colonna edit per consentire la modifica dei dati.
Ora c'è un modo per vedere se una colonna è stata modificata?
ciao a tutti..
ho una gridview (riempita con dati presi dal db), ho aggiunto la colonna edit per consentire la modifica dei dati.
Ora c'è un modo per vedere se una colonna è stata modificata?
dentro l'evento row_editing imposti l'indice della riga da editare e rifai il bind
dentro l'evento row_databound gestisci l'operazione di modifica verso il db
Scusa tanto ma puoi essere più chiaro magari con qualche esempio... sai non sono molto esperto!!![]()
cmq non mi interessare impostare la riga da editare (lo devono essere tutte), mi interessa solo sapere quale colonna è stata modificata
scusa, ieri sera ho indicato un evento non corretto (row_databound)
---------------
questo è l'evento scatenato alla pressione del link EDIT, che imposta l'indice della riga da editare
codice:protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; //qui richiami la funzione che preleva i dati dal tuo datasource //(in questo caso un db) e fai il bind alla griglia }fammi sapere, ciaocodice:protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { e.Cancel = true; //qui fai tutte le operazioni di aggiornamento al db //l'argomento e (GridViewUpdateEventArgs e) contiene l'indice della riga //interessata dalla modifica più altre informazioni lunghe da spiegare }
Il problema è che non me ne facccio niente della riga editata, a me serva ricavare la colonna editata: se è stata modificata una certa colonna devo fare determinate operazioni.
dentro all'evento updating
if (e.Row.RowType == DataControlRowType.Header)
{
//l'header
GridViewRow headerRow = e.Row;
foreach (TableCell cell in e.Row.Cells)
{
foreach (Control ctl in cell.Controls)
{
if (ctl.GetType().BaseType == typeof(LinkButton) && ((LinkButton)ctl).Text == "Delete")
}
dentro all'evento updating
if (e.Row.RowType == DataControlRowType.Header)
{
//l'header
GridViewRow headerRow = e.Row;
for (int i=0; i < e.Row.Cells.Count; i++)
{
if (e.Row.Cells[i].Controls[0].GetType() == typeof(Textbox) && headerRow.Cells[i].Text == "pippo")
{
//qui sei dentro al caso di modifica del valore appartenente alla colonna pippo
}
}
provalo, io per ora non ho il tempo per farlo
scusa se ti rompo... ho deciso di cambiare sistema.
Ora però mi serve sapere come faccio a recuperare il contenuto di una riga (colonna per colonna).
Grazie davvero mille!
sempre nell'evento updating
//questa riga prima andava così, ho sbagliato a scrivere dalla fretta
if (e.Row.RowType == DataControlRowType.DataRow)
{
foreach (TableCell cell in e.Row.Cells)
{
foreach (Control ctl in cell.Controls)
{
if (ctl.GetType() == typeof(TextBox))
{
TextBox txt = (TextBox)ctl;
//fai tutto il resto, l'oggetto txt rappresenta ogni singola textbox
//della riga in fase di edit
}
}
}
}
chiedo troppo se ti chiedo di farmelo in visual basic?