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

    [VB.NET] Lettura Value di una Listbox

    Salve.
    Ho cercato in tutto il forum ma non ho trovato una risposta...
    Ho una funzione che deve leggere gli elementi selezionati di una ListBox di persone e deve memorizzare le informazioni nel database. A me però serve che memorizzi l'ID della persona e non l'index che ha in quel momento nella listbox, altrimenti al cambiare degli index il valore non corrisponde più alla persona scelta. A tale scopo ho definito il campo ID della tabella Persone come ValueMember della listbox, quando la popolo. Ora... come estraggo il Value dalla listbox? Così facendo:

    Dim Selection As ListBox.SelectedIndexCollection = ListaPersone.SelectedIndices


    For i As Integer = 0 To Selection.Count - 1
    ' Leggo Selection(i)
    Next


    ...memorizza gli index, che a me non servono. Invece così facendo:


    Dim Selection As ListBox.SelectedObjectCollection = ListaPersone.SelectedItems

    For i As Integer = 0 To Selection.Count - 1
    ' Leggo Selection(i)
    Next


    Mi restituisce errore. Se leggo Selection(i).ToString non vedo il valore ma proprio la stringa "System.Data.DataRowView". Ho rovistato tutto Internet e non ho trovato niente... come posso fare?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970

    Re: [VB.NET] Lettura Value di una Listbox

    Benchè abbia capito poco poco da quello che hai scritto....

    Originariamente inviato da itised
    Salve.
    Ho cercato in tutto il forum ma non ho trovato una risposta...
    Ho una funzione che deve leggere gli elementi selezionati di una ListBox di persone e deve memorizzare le informazioni nel database.
    Quali informazioni????
    Come popoli la ListBox???
    Dalla ListBox cosa scegli???


    A me però serve che memorizzi l'ID della persona e non l'index che ha in quel momento nella listbox, altrimenti al cambiare degli index il valore non corrisponde più alla persona scelta. A tale scopo ho definito il campo ID della tabella Persone come ValueMember della listbox, quando la popolo. Ora... come estraggo il Value dalla listbox? Così facendo:

    codice:
    Dim Selection As ListBox.SelectedIndexCollection = ListaPersone.SelectedIndices
    
    For i As Integer = 0 To Selection.Count - 1 
    ' Leggo Selection(i) 
    Next
    Ma scusa a che serve quella pappardella????

    Non basta:
    codice:
     Private Sub ListaPersone_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListaPersone.SelectedIndexChanged
            Dim nome As String = ListaPersone.SelectedItem
        End Sub
    :master:
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    Ok cerco di spiegarmi meglio.

    La listbox è popolata dall'elenco di queste persone, letto dalla tabella Persone nel database. Ho settato il campo ID come ValueMember e il campo Descrizione come DisplayMember.

    A questo punto io posso selezionare una o più di queste persone (SelectionMode = MultiSimple).

    Dopodichè premendo un Button devo leggere quali sono le persone selezionate e voglio che, per ogni persona, sia memorizzato un record su una tabella che associa ogni persona a una iniziativa, chiamiamola InizPersone. Ogni record è l'ID dell'iniziativa (che corrisponde a quello della tabella Iniziative e che memorizzo senza problemi) e l'ID della persona, che deve corrispondere a quello che sta nella tabella Persone. Memorizzare quindi quali persone tra quelle in archivio hanno partecipato all'iniziativa, che possono essere da 1 a N. Da qui il problema di non poter usare l'index che è sempre consecutivo, mentre la tabella Persone può subire cancellazioni di record.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da itised
    Ho settato il campo ID come ValueMember e il campo Descrizione come DisplayMember.
    Staimo parlando del Database?
    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Si quelli sono 2 campi della tabella Persone.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    La ListBox si popola solo col Nome?
    Sbagliare è umano, perseverare è diabolico.

  7. #7
    La lista è inizializzata con questa funzione:


    Public Sub RiempiList(ByVal Conn As OleDb.OleDbConnection, ByVal Ricerca As String, ByVal List As ListBox, ByVal Value As String, ByVal Display As String)

    'Svuotamento List
    tableList = New DataSet

    'Riempimento List
    adapterList = New OleDb.OleDbDataAdapter(Ricerca, Conn)
    adapterList.Fill(tableList)
    With List
    .DataSource = tableList.Tables(0)
    .ValueMember = Value
    .DisplayMember = Display
    End With

    End Sub


    e richiamo con:


    Dim Conn As New OleDb.OleDbConnection
    Dim Ricerca as String = "SELECT ID, Descrizione FROM Persone"
    RiempiList(Conn, Ricerca, ListPersone, "ID", "Descrizione")

  8. #8

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.