Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB .NET] DeleteCommand non eseguito su DataGrid

    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??

  2. #2
    prova così

    codice:
    Private Sub DataGrid1_DeleteCommand(ByVal source As System.Object, ByVal e As DataGridCommandEventArgs) Handles DataGrid1.DeleteCommand
            Dim myId as integer = DataGrid1.DataKeys(e.Item.ItemIndex)
            Dim Sql_cmd As String = "DELETE FROM " & tabella & "WHERE ID_file=" & myId & ";"
            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
    "...non è detto che sia tardi se non guardi che ora è..."

  3. #3
    No...niente da fare...non fa nulla...il motivo è che non va assolutamente a vedere cosa ci sia dentro al metodo DataGrid1_DeleteCommand
    infatti il debugger non si arresta se metto dei breapoint all'interno del metodo...

    ...forse devo settare qualche proprietà di datagrid??...
    codice:
    ...
    <asp:ButtonColumn Text="Delete" ButtonType="PushButton" HeaderText="ELIMINA" CommandName="Delete">
    <ItemStyle HorizontalAlign="Center"></ItemStyle>
    </asp:ButtonColumn>
    ...
    Questa è la sezione html della colonna in questione....

  4. #4

  5. #5

    ok...sono riuscito a risolvere:
    bisogna definire nel tag asp:datagrid l'attributo OnDeleteCommand="DataGrid1_Delete"
    e (inspiegabilmente... ) settare il tipo dei bottoni a LinkButton.
    In tale maniera riesce ad essere eseguito il codice seguente all'evento di cancellazione di un record.....Sarei curioso di sapere perchè non funziona con PushButton...Qualcuno può illuminarmi?? (vorrei usare PushButton!!!)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.