uso una EditCommandColumn
nell' evento dell'Update come recupero i dati dalle textbox??
uso una EditCommandColumn
nell' evento dell'Update come recupero i dati dalle textbox??
Sub dtgrEsempio_UpdateCommand(obj As Object, e As DataGridCommandEventArgs)
Dim intID As Integer
Dim txtAttivitaBreve As TextBox
Dim txtAttivitaEsteso As TextBox
'Recupera l'ID del record
intID = dtgrdAttivita.DataKeys(e.Item.ItemIndex)
'Esempio per recuperare i dati da una textBox
txtAttivitaBreve = e.Item.Cells(0).Controls(0)
txtAttivitaEsteso = e.Item.Cells(1).Controls(0)
Dim strAttivitaBreve As String = txtAttivitaBreve.Text
Dim strAttivitaEsteso As String = txtAttivitaEsteso.Text
'Richiama la procedura archiviata
Dim objCmd As new oleDbCommand ("updateAttivita", Con)
objCmd.CommandType = CommandType.StoredProcedure
'Se non usi procedure archiviate sostituisci questa
'parte con una comune stringa sql.
'Imposta i parametri
objCmd.Parameters.Add("@attivitaBreve", strAttivitaBreve)
objCmd.Parameters.Add("@attivitaEsteso", strAttivitaEsteso)
objCmd.Parameters.Add("@idAttivita", intID)
Con.Open()
objCmd.ExecuteNonQuery()
Con.Close()
dtgrdAttivita.EditItemIndex = -1
BindDataGrid
End Sub
ho fatto proprio come dici tu
TextBox Nome = (TextBox)e.Item.Cells[0].Controls[0];
TextBox Immagine = (TextBox)e.Item.Cells[1].Controls[0];
string strNome = Nome.Text;
string strImmagine = Immagine.Text;
int CategoryID = (int)DataGridMacro.DataKeys[e.Item.ItemIndex];
però in questa query
string SQL = string.Format("UPDATE MacroCategories SET CategoryName='{0}', CategoryImg='{1}' WHERE CategoryID={2}",strNome,strImmagine,CategoryID);
vedo che i valori sono quelli vecchi
perchè???
Anche io avevo avuto un problema simile.
Come sai, in questi casi si usa una sub (che ho chiamato BindDataGrid) che estrae semplicemente i dati dal db e li visualizza. Tale Sub viene richiamata in ogni subroutine: quella per l'update, quella per la cancellazione ecc. Viene anche richiamata alla prima apertura della pagina nella sub Page_load. Appunto, nel mio caso l'aggiornamente non funzionava finché non ho impostato la sub Page_Load in questo modo
Sub Page_Load(Src As Object, E As EventArgs)
If Not Page.isPostBack Then
BindDataGrid
End If
End Sub
Non so se questo può esserti di aiuto.
Hai provato:
dim oggetto as string=CType(e.items.cells(n).controls(0),textbox) .text
dove n è la cella del datagrid che hai editato e devi updatare,
e poi assegni al parametro da updatare il valore di oggetto
Saluti
Enzo