Visualizzare combobox con testo (mi visualizza l'id)

di il
11 risposte

Visualizzare combobox con testo (mi visualizza l'id)

Buongiono, scusate la banalità della domanda ma sono alle prime armi:

Ho una tabella in access con 2 colonne id e prodotto l'ho collegata come datasource a una combobox e viene correttamente caricata, ho impostato come DisplayMember prodotto e come come valuemember id ma mi fa vedere l'id e non il corrispondente nome del prodotto, sapreste dirmi come posso fare ?

Grazie

11 Risposte

  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Prova a postare il codice

  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Ciao, forse ad entrambe le proprietà ValueMember e DisplayMember non hai assegnato delle stringhe. Dovrebbe essere, ad esempio, così:

            public Form1()
            {
                InitializeComponent();
                
                List<Riga> elenco = new List<Riga>();
                elenco.Add(new Riga() { ID = 1, Name = "Alberto" });
                elenco.Add(new Riga() { ID = 2, Name = "Davide" });
                elenco.Add(new Riga() { ID = 3, Name = "Francesco" });
                elenco.Add(new Riga() { ID = 4, Name = "Giuseppe" });
                
                comboBox1.ValueMember = "ID";
                comboBox1.DisplayMember = "Name";
                comboBox1.DataSource = elenco;            
    
            }
            class Riga
            {
                public int ID { get; set; }
                public string Name { get; set; }
            }
  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Ciao grazie per le risposte il codice è quello riportato in basso

    la tabella access prodotti ha come tipo iDProdotto un autoincrement intero lungo, la tabella su cui andrà a scrivere la combo è dello stesso tipo

    con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\test.accdb");
    con.Open();
    cm = new OleDbCommand("Select IDProdotto,prodotto from prodotti", con);
    dt = new DataTable();
    da = new OleDbDataAdapter(cm);
    da.Fill(dt);
    cboIdprodotto.DataSource = dt;
    cboIdprodotto.DisplayMember = "prodotto";
    cboIdprodotto.ValueMember = "IDProdotto";

  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Allora, sostituisci le ultime 3 righe con:

    cboIdprodotto.DisplayMember = dt.Columns["prodotto"].ColumnName;
    cboIdprodotto.ValueMember = dt.Columns["IDProdotto"].ColumnName;
    cboIdprodotto.DataSource = dt;
  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Ho provato il codice che mi hai postato, quando apro il form mi visualizza il primo elemento della tabella (non quello che c'è scritto sulla tabella collegata) poi andando avanti e indietro con il binding navigator mi mostra l'idprodotto non la descrizione del prodotto

  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Intanto, io comincerei a vedere se i tuoi dati vengono realmente letti e inseriti nelle colonne della DataTable.

    Potresti provare ad inserire queste righe, per visualizzare la datatable in un controllo DataGridView:

    DataGridView dataGridView1 = new DataGridView();
    dataGridView1.ClientSize = new Size(600, 300);
    dataGridView1.DataSource = dt;                        
    Controls.Add(dataGridView1);
  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    La datagridview mi elenca correttamente le 2 colonne  della tabella prodotti.

    forse mi sfugge qualcosa ma non mi dovrebbe fare vedere selezionato il valore del prodotto con id = 7 invece che il numero ?

  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Sicuramente,

    allora prova ad andare nella finestra di progettazione, cancella il ComboBox e creane uno nuovo, perchè potrebbe anche darsi che inavvertitamente hai modificato qualche valore nel riquadro delle proprietà…

  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Ho provato ma non è cambiato nulla.

     La butto li ma non è che l'associazione alla colonna di destinazione del database la devo dare dopo che ho popolato la combobox ?

    Io ho creato la combobox dall'origine dati che ha già collegato il campo di destinazione e successivamente la popolo.

  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Ah, forse questo è l'inghippo. Quando crei la ComboBox nella finestra di progettazione, nelle proprietà non devi associare nessun dato. Poi, dopo il popolamento della DataTable, metti quelle tre righe che ti ho scritto sopra (Display… Value e DataSource…) in quest'ordine. A me funziona.

    Altrimenti, dopo la datatable, crea una List con una coppia di valori e assegnagli la List alla ComboBox, altrimenti diventiamo matti.

  • Re: Visualizzare combobox con testo (mi visualizza l'id)

    Grazie mille per l'aiuto fabiocaruso ho risolto.

Devi accedere o registrarti per scrivere nel forum
11 risposte