[VB.NET]Combobox popolato da datatable, visualizzare campi

di il
2 risposte

[VB.NET]Combobox popolato da datatable, visualizzare campi

Il codice seguente crea una datatable con 4 colonne e popola una combobox, quindi scegliendo un item della combo permette di visualizzare tutti i dati associati al display member, Funziona bene, ma soltanto con la direttiva Option Strict Off, se si cambia a ON le righe del tipo txtFruttoNome.Text = cmbFrutti.SelectedItem("Frutto") danno errore di associazione tardiva e non so come correggere.
Option Strict Off
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim DSTabellaFrutti As New DataTable
        DSTabellaFrutti.Columns.Add("Id")
        DSTabellaFrutti.Columns.Add("Frutto")
        DSTabellaFrutti.Columns.Add("Colore")
        DSTabellaFrutti.Columns.Add("Prezzo")

        Dim Frutto(3) As String
        Frutto(0) = "0"
        Frutto(1) = "Mela"
        Frutto(2) = "Rosso"
        Frutto(3) = "2"

        DSTabellaFrutti.Rows.Add(Frutto)
        Frutto(0) = "1"
        Frutto(1) = "Banana"
        Frutto(2) = "Giallo"
        Frutto(3) = "2,3"

        DSTabellaFrutti.Rows.Add(Frutto)

        Frutto(0) = "2"
        Frutto(1) = "Arancia"
        Frutto(2) = "Arancione"
        Frutto(3) = "3,5"

        DSTabellaFrutti.Rows.Add(Frutto)

        Frutto(0) = "3"
        Frutto(1) = "Kiwi"
        Frutto(2) = "Verde"
        Frutto(3) = "4,2"

        DSTabellaFrutti.Rows.Add(Frutto)


        cmbFrutti.DataSource = DSTabellaFrutti
        cmbFrutti.DisplayMember = "Frutto"
        cmbFrutti.ValueMember = "Id"
    End Sub

    Private Sub cmbFrutti_SelectedIndexChanged _
                (ByVal sender As System.Object,
                 ByVal e As System.EventArgs) _
                 Handles cmbFrutti.SelectedValueChanged

        txtFruttoNome.Text = cmbFrutti.SelectedItem("Frutto") '<<<<<<<<<<<<<
        txtFruttoId.Text = cmbFrutti.SelectedValue.ToString
        txtFruttoColore.Text = cmbFrutti.SelectedItem("Colore") '<<<<<<<<<<<<<
        TxtFruttoPrezzo.Text = cmbFrutti.SelectedItem("Prezzo") '<<<<<<<<<<<<<
    End Sub


End Class

2 Risposte

  • Re: [VB.NET]Combobox popolato da datatable, visualizzare campi

    Innanzitutto nelle righe di definizione dei campi della DataTable non hai specificato i tipi di campo
    DSTabellaFrutti.Columns.Add("Frutto")
    devi dirgli che è di tipo String, ma non è quello l'errore, però ti rende il tutto più leggibile

    L'errore è qui, e cioè che non hai tipizzato l'oggetto restituito dalla SelectedItem:
    txtFruttoNome.Text = CType(cmbFrutti.SelectedItem, System.Data.DataRowView).Item("Frutto").ToString
  • Re: [VB.NET]Combobox popolato da datatable, visualizzare campi

    Grazie Sergio
Devi accedere o registrarti per scrivere nel forum
2 risposte