Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Selezione dei valori di una riga in una listbox
Forum - C# / VB.NET - Selezione dei valori di una riga in una listbox

Avatar
Grubby (Normal User)
Pro


Messaggi: 85
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 19:53
Lunedì, 17/05/2010
Questo topic è stato chiuso dal moderatore

Ciao
Avrei bisogno di aiuto...
Ho creato un db in access e adesso devo fare un pannelo di amministrazione in vb.net.
Ho creato una form che nella load effettua una select di tutti i miei utenti con i relativi dati (nome, cognome, nick, password, e-mail....) e gli pone all'interno di una listbox.
Adesso avrei bisogno di un comando che in base alla riga selezionata nella mia listbox mi carica tutti i miei dati (dello stesso utente) in texbox diverse...
Non so da dove partire:-|

Continuo a googleggiare ma non trovo niente:d
Qualcuno mi da una mano?
Grazie in anticipo

PM
Avatar
Federico_VbNet_Programmer (Normal User)
Expert


Messaggi: 222
Iscritto: 03/04/2010

Segnala al moderatore
Postato alle 7:33
Martedì, 18/05/2010
Allora io farei così:
-All'evento indexchange della listbox ci metto di caricare i dati da Listbox1.SelectdItem (sarebbe l'elemento selezionato)
-Il primo dato lo mette nella textbox1,il secondo nella textbox2,e cos' via...
Dimmi se hai risolto in questo modo:D

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 14:20
Martedì, 18/05/2010
Ti suggerisco il controllo BindingNavigator:
http://totem.altervista.org/guida/versione3/C6%20-%20Il%20 ...
E al posto di una listbox, una datagridview:
http://totem.altervista.org/guida/versione3/C7%20-%20DataG ...
L'esempio di quest'ultimo link è proprio uguale a quello che devi fare tu.

Il gestore di database usato è MySql, ma fa poca differenza se passi a dataset tipizzati.

Ultima modifica effettuata da Il Totem il 18/05/2010 alle 14:22
PM
Avatar
Grubby (Normal User)
Pro


Messaggi: 85
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 15:27
Martedì, 18/05/2010
Testo quotato

Postato originariamente da Il Totem:

Ti suggerisco il controllo BindingNavigator:
http://totem.altervista.org/guida/versione3/C6%20-%20Il%20 ...



Non funziona:D Non trova la pagina
Comunque ho risolto come mi ha suggerito Totem

Ora ho un'altro probblema...
Sto utilizzando un datagrindview con sotto 2 bottoni con scritto cancella e modifica record.
Come ultima istruzione nel bottone modifica e cancella dovrei fare una refresh del datagridview ma ogni volta che ricarico i record, gli aggiunge al datagrid, mentre dovrebbe sostituirli.
Sto cercando un comando per poter pulire tutte le mie righe.
:-| è molto che cerco ma google non mi aiuta

Comunque complimenti Totem per la bella guida
Hai fatto tutto da solo?

PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:13
Martedì, 18/05/2010
DataGridView.Rows.Clear()

E sì, ho fatto tutto da solo (ora il link è a posto).

Ultima modifica effettuata da Il Totem il 19/05/2010 alle 20:38
PM
Avatar
Grubby (Normal User)
Pro


Messaggi: 85
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 19:36
Martedì, 18/05/2010
Davvero complimenti...
Grazie per il link
Comunque datagridview.rows.clear() non funziona
Quando faccio la refresh del datagrid mi copia gli stessi dati 3 volte....
o meglio la prima copia dei dati è la copia prima della modifica del database,
la seconda copia è uguale alla prima (non so da dove venga fuori),
la terza sono i dai aggiornati del database.

Comunque io non passo da dataset (anche perchè non so usarli):-|, pongo direttamente da database dentro delle variabili che poi sistemo all'interno del datagrid.
E' sbagliato?

Vi posto il codice anche se è un po' lungo


Public Class Amministratore

    Dim miodataset As New DataSet
    Dim miodataadapter As New OleDb.OleDbDataAdapter
    Dim oledbconnection1 = New OleDb.OleDbConnection
    Dim item_nick, item_psw, item_nome, item_cognome, item_e_mail, item_stato_reg, item_rango As String

    Private Sub Amministratore_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        caricamento()
    End Sub
  
    Private Sub DataGridView1_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
        indice = DataGridView1.CurrentCellAddress.Y
        modifica()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oledbconnection1 = New OleDb.OleDbConnection
        miodataadapter.SelectCommand = New OleDb.OleDbCommand
        miodataadapter.SelectCommand.Connection = oledbconnection1

        If TxtCognome.Text = "" Or TxtNome.Text = "" Or TxtNick.Text = "" Or TxtPassword.Text = "" Or TxtCognome.Text = "" Then
            MsgBox("Impossibile modificare i dati dell'utente. Controllare di aver compilato tutti i campi correttamente.")
        Else
            Dim x1nick, x1password, x1cognome, x1nome, x1stattivazione, x1rango As String
            x1nome = TxtNome.Text
            x1cognome = TxtCognome.Text
            x1nick = TxtNick.Text
            x1password = TxtPassword.Text
            x1rango = TxtRango.Text
            x1stattivazione = Txtstatoreg.Text

            miodataadapter.UpdateCommand = New OleDb.OleDbCommand
            miodataadapter.UpdateCommand.Connection = oledbconnection1
            oledbconnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
                    "ocking Mode=1;Data Source=""C:\Users\Lucas\Desktop\dbREGISTRAZIONE.mdb"";Mod" & _
                    "e=ReadWrite;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB" & _
                    ":System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Prope" & _
                    "rties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database" & _
                    "=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Com" & _
                    "pact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"
            oledbconnection1.Open()
            miodataadapter.UpdateCommand.CommandText = "update TABREGISTRAZIONE set NICK = '" & x1nick & "', PSW = '" & x1password & "', NOME = '" & x1nome & "', COGNOME = '" & x1cognome & "', STATTIVAZIONE = '" & x1stattivazione & "', RANGO = '" & x1rango & "'  where EMAIL = '" & e_mail & "'"
            miodataadapter.UpdateCommand.ExecuteNonQuery()
            oledbconnection1.Close()
            MsgBox("I dati dell'utente sono stati modificati correttamente", MsgBoxStyle.MsgBoxSetForeground, "Avviso")
            DataGridView1.Rows.Clear()
            caricamento()
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        If TxtCognome.Text = "" Or TxtNome.Text = "" Or TxtNick.Text = "" Or TxtPassword.Text = "" Or TxtCognome.Text = "" Then
            MsgBox("Nessun utente selezionato")
        Else
            If MessageBox.Show("Vuoi davvero cancellare?", "Cancella", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
                miodataadapter.DeleteCommand = New OleDb.OleDbCommand
                miodataadapter.DeleteCommand.Connection = oledbconnection1
                oledbconnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
                        "ocking Mode=1;Data Source=""C:\Users\Lucas\Desktop\dbREGISTRAZIONE.mdb"";Mod" & _
                        "e=ReadWrite;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB" & _
                        ":System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Prope" & _
                        "rties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database" & _
                        "=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Com" & _
                        "pact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"
                oledbconnection1.Open()
                miodataadapter.DeleteCommand.CommandText = "DELETE FROM TABREGISTRAZIONE where EMAIL = '" & e_mail & "'"
                miodataadapter.DeleteCommand.ExecuteNonQuery()
                oledbconnection1.Close()
                MsgBox("l'utente è stato cancellato", MsgBoxStyle.MsgBoxSetForeground, "Avviso")
            End If

            caricamento()
        End If
    End Sub
    Private Sub modifica()
        Dim item_nick, item_psw, item_nome, item_cognome, item_stato_reg, item_rango As String

        miodataadapter.SelectCommand = New OleDb.OleDbCommand
        miodataadapter.SelectCommand.Connection = oledbconnection1
        oledbconnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
                "ocking Mode=1;Data Source=""C:\Users\Lucas\Desktop\dbREGISTRAZIONE.mdb"";Mod" & _
                "e=ReadWrite;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB" & _
                ":System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Prope" & _
                "rties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database" & _
                "=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Com" & _
                "pact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"
        oledbconnection1.Open()
        miodataadapter.SelectCommand.CommandText = "SELECT * FROM TABREGISTRAZIONE"
        miodataadapter.Fill(miodataset, "ElencoStudenti")
        oledbconnection1.Close()

        For i = 0 To miodataset.Tables("ElencoStudenti").Rows().Count - 1
            If i = indice Then
                item_nick = miodataset.Tables("ElencoStudenti").Rows(i).Item("NICK")
                item_psw = miodataset.Tables("ElencoStudenti").Rows(i).Item("PSW")
                item_nome = miodataset.Tables("ElencoStudenti").Rows(i).Item("NOME")
                item_cognome = miodataset.Tables("ElencoStudenti").Rows(i).Item("COGNOME")
                item_stato_reg = miodataset.Tables("ElencoStudenti").Rows(i).Item("STATTIVAZIONE")
                item_rango = miodataset.Tables("ElencoStudenti").Rows(i).Item("RANGO")
                e_mail = miodataset.Tables("ElencoStudenti").Rows(i).Item("EMAIL")

                TxtNome.Text = item_nome
                TxtCognome.Text = item_cognome
                TxtNick.Text = item_nick
                TxtPassword.Text = item_psw
                Txtstatoreg.Text = item_stato_reg
                TxtRango.Text = item_rango
            End If
        Next
    End Sub
    Private Sub caricamento()
        miodataadapter.SelectCommand = New OleDb.OleDbCommand
        miodataadapter.SelectCommand.Connection = oledbconnection1
        oledbconnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
                "ocking Mode=1;Data Source=""C:\Users\Lucas\Desktop\dbREGISTRAZIONE.mdb"";Mod" & _
                "e=ReadWrite;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB" & _
                ":System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Prope" & _
                "rties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database" & _
                "=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Com" & _
                "pact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"
        oledbconnection1.Open()
        miodataadapter.SelectCommand.CommandText = "SELECT * FROM TABREGISTRAZIONE"
        miodataadapter.Fill(miodataset, "ElencoStudenti")
        oledbconnection1.Close()

        For i = 0 To miodataset.Tables("ElencoStudenti").Rows().Count - 1
            item_nick = miodataset.Tables("ElencoStudenti").Rows(i).Item("NICK")
            item_psw = miodataset.Tables("ElencoStudenti").Rows(i).Item("PSW")
            item_nome = miodataset.Tables("ElencoStudenti").Rows(i).Item("NOME")
            item_cognome = miodataset.Tables("ElencoStudenti").Rows(i).Item("COGNOME")
            item_e_mail = miodataset.Tables("ElencoStudenti").Rows(i).Item("EMAIL")
            item_stato_reg = miodataset.Tables("ElencoStudenti").Rows(i).Item("STATTIVAZIONE")
            item_rango = miodataset.Tables("ElencoStudenti").Rows(i).Item("RANGO")

            DataGridView1.Rows.Add()
            DataGridView1.Item(0, i).Value = item_nick
            DataGridView1.Item(1, i).Value = item_psw
            DataGridView1.Item(2, i).Value = item_nome
            DataGridView1.Item(3, i).Value = item_cognome
            DataGridView1.Item(4, i).Value = item_e_mail
            DataGridView1.Item(5, i).Value = item_stato_reg
            DataGridView1.Item(6, i).Value = item_rango
        Next
    End Sub

End Class

Se non capite qualcosa chiedete anche perchè non ho commentato:)
Grazie in anticipo



PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 20:45
Mercoledì, 19/05/2010
Puoi usare anche questo modo, solo che viene molto confusionario...

Rows.Clear() potrebbe non funzionare nel caso la datagridview abbia un binding verso un dataset, ma poiché aggiungi i dati manualmente deve funzionare...

PM
Avatar
Grubby (Normal User)
Pro


Messaggi: 85
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 22:05
Mercoledì, 19/05/2010
Grazie mille:k:
Ho risolto utilizzando un dataset
grazie a tutti

PM