Salve a tutti,
ho letto varie discussioni su questo forum e altrove a riguardo, ma il risultato (o meglio il NON risultato) è sempre il medesimo . Ho una pagina aspx con un datagrid, collegato ad un db MySQL, al quale si possono aggiungere record per mezzo dell'interfaccia web (fin qui tutto ok). Volendo permettere all'utente di eliminare un record ho aggiunto al datagrid una ButtonColumn di bottoni tipo Delete. Ho impostato la chiave del datagrid (che è un indice intero che si autoincrementa ad ogni inserimento) prima di fare il binding col datasource. Ho vari metodi privati di ausilio:
codice:
Private Sub BindDataGrid()
        'collega la sorgente dati al datagrid
        Me.DataGrid1.DataSource = datatable
        Me.DataGrid1.DataKeyField = "ID_file"
        Me.DataGrid1.DataBind()
End Sub

Private Function GetDataRow(ByVal id As Integer) As DataRow
'restituisce il datarow con un determinato valore chiave
        'seleziona record da datatable con questo valore chiave
        Dim drows() As DataRow
        Dim filtro As String = "ID_file=" & id.ToString
        drows = datatable.Select(filtro)
        If drows.Length > 0 Then Return drows(0)
End Function


Private Sub DataGrid1_DeleteCommand(ByVal source As System.Object, ByVal e As DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand
        'ottiene datarow
        Dim dr As DataRow = GetDataRow(CInt(DataGrid1.DataKeys(e.Item.ItemIndex)))
        Dim Sql_cmd As String = "DELETE FROM " & tabella & "WHERE ID_file=" & dr("ID_file") & ";"
        Dim command2 As New MySqlCommand(Sql_cmd, connection)
        Try
            connection.Open()
            command2.ExecuteNonQuery()
            connection.Close()
        Catch ex As MySqlException

        End Try
        dr.Delete()
        BindDataGrid()
    End Sub
...datatable e connection sono variabili della classe...
Il problema è che, secondo me, alla pressione del bottone Delete non viene eseguito il codice relativo (GetDataRow funziona correttamente ne sono certo)...Dove sbaglio??