Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89

    [vb.net - asp.net] evento associato a buttoncolumn

    Ciao!
    Vi scrivo perchè ho un problema di concetto nell'utilizzo del buttoncolumn.
    io ho il mio bel datagrid, all'interno del quale ho messo questo buttoncolumn:


    codice:
    <ASP:DataGrid id="dg" runat="server" CellPadding="2" ShowHeader="true" 
    BorderColor= "black" BackColor = "#ccccff" HeaderStyle-BackColor= "#aaaadd" 
    HeaderStyle-CssClass= "intestazione" ItemStyle-verticalalign="Top" 
    ItemStyle-CssClass = "piccolo" AlternatingItemStyle-BackColor="#aaaadd" 
    Border="1" PagerStyle-Mode="NumericPages" PagerStyle-HorizontalAlign="Right" 
    PagerStyle-position="TopAndBottom" width="300px" AutoGenerateColumns="true" 
    PageSize="10" OnItemCommand="Button_Click">
            
    <Columns>
    
        <asp:ButtonColumn HeaderText="Acquisto" ButtonType="pushbutton" Text="Compra"/>
                                                
    </Columns>
                     
    </ASP:DataGrid></div>
    vorrei creare una sub che al click di un pulsante elimini la voce selezionata. ed ecco qui il mio dubbio..
    Io ho realizzato questa sub, tralasciando il fatto che mi dà un errore nella sintassi sql, e che è una sub di prova che non fa quello che vorrei, non mi convince un gran che.

    codice:
    Sub Button_Click(ByVal Sender As System.Object, ByVal E As System.Web.UI.WebControls.DataGridCommandEventArgs)
                   
            connetti_database()
            Try
               
                Dim cancellagioc As New MySqlCommand("DELETE * FROM giocatori_tot", conn)
                cancellagioc.ExecuteNonQuery()
                
                'dg.DataSource = dataReader
                dg.DataBind()
            Catch ex As SqlException
                Response.Write(ex.Message)
                
                
            End Try
            disconnetti_database()
        End Sub
    Ovviamente non pretendo la soluzione anche perchè mi piacerebbe arrivarci da solo, ma se potete darmi un consiglio o perlomeno indirizzarmi nella giusta direzione ve ne sarei molto grato...
    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    Asp.net ha il suo sub-forum..

  3. #3
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89
    Si hai ragione e ti chiedo scusa, ma qui è l'unica sezione dove ho avuto delle risposte.
    Se un admin mi può spostare la discussione glie ne sarei grato.

    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    14
    Salve... vorrei darti una mano... innanzi tutto ho notato che dal codice che hai postato il datagrid non è agganciato a nessun data source.... quindi presumo che tu lo riempia da codice.... generalmente con un datasource è piu comodo ma se la necessità ti ha spinto a riempire il datagrid da codice vorrei che tu mi postassi il codice in questione... insomma vorrei sapere qual'è l'origine dei dati che popolano il datagrid....

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Allora, prima di tutto elimini questa istruzione dalla pagina html

    OnItemCommand="Button_Click"

    Poi aggiungi la proprietà CommandName al pulsante:

    <asp:ButtonColumn HeaderText="Acquisto" ButtonType="pushbutton" Text="Compra" CommandName="elimina" />


    poi agganci l'evento ItemCommand
    codice:
        Protected Sub dg_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles dg.ItemCommand
            Dim g As DataGrid = DirectCast(source, DataGrid)
    
            Dim id As Integer = CInt(g.DataKeys(e.Item.ItemIndex))
    
            If e.CommandName = "info" Then
                Me.Label2.Text = "Hai premuto il pulsante corrispondente all'ID: " & id
            ElseIf e.CommandName = "elimina" Then
                Me.Label2.Text = "Vuoi cancellare la riga corrispondente all'ID: " & id
            End If
    
        End Sub
    Una volta che hai l'id del record e sai che azione vuoi itraprendere, hai tutti gli elementi per proseguire.
    Pietro

  6. #6
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89
    Grazie a tutti e due dell'aiuto, venerdì alla fine sono riuscito a risolvere in questo modo:

    codice:
    Sub Button_Click(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs)
        
            Try
                
                Dim ID As Object = e.Item.ItemIndex            
                Dim query As String = "DELETE FROM giocatori_tot WHERE id_giocatore = @ID"
                Dim cmd As New MySqlCommand(query, conn)
                
                connetti_database()
                
                cmd.Parameters.AddWithValue("@ID", dg.DataKeys(ID))
                cmd.ExecuteNonQuery()
                
                disconnetti_database()
    
                dg.EditItemIndex = -1
                
            Catch ex As Exception
                Response.Write(ex.Message)
            End Try
            
        End Sub
    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da kobe83
    Grazie a tutti e due dell'aiuto, venerdì alla fine sono riuscito a risolvere in questo modo:

    codice:
    Dim ID As Object = e.Item.ItemIndex            
    Dim query As String = "DELETE FROM giocatori_tot WHERE id_giocatore = @ID"
    Guarda che è sbagliato: l'id della tabella non corrisponde certo all'indice della tabella :master:
    Pietro

  8. #8
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89
    Originariamente inviato da pietro09
    Guarda che è sbagliato: l'id della tabella non corrisponde certo all'indice della tabella :master:
    Mi sono scordato di dire che nella dichiarazione del datagrid ho aggiunto la proprietà DataKeyField="id_giocatore", in questo modo dovrebbe associarmi l'id del datagrid al mio id_giocatore.

    C'è un modo migliore?
    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    prova a farti una query ordinando i dati in ordine decrescente per id_giocatore e poi prova a vedere se ti cancella i record giusti
    Pietro

  10. #10
    Utente di HTML.it L'avatar di kobe83
    Registrato dal
    Sep 2008
    Messaggi
    89
    Si funziona. Non capisco perchè dovrei avere dei problemi, se associol'id dell'elemento del datagrid selezionato all'id sulla mia tabella sql non dovrebbero esserci problemi.
    Ci sono TRE tipi di persone al mondo: quelli che ragionano in binario e quelli che no

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 © 2026 vBulletin Solutions, Inc. All rights reserved.