2012-10-26 4 views
5

Nel mio progetto, i valori della casella combinata stanno arrivando in un metodo denominato "getArticles". Ecco il metodo:Come ottengo l'elemento selezionato dalla casella combinata che è stata creata con datatable

public void getArticles(ComboBox cb) 
{ 
    var getAll = getAllFromDB("articles", "", "articleName ASC"); 
    DataTable dt = getAll.Tables["articles"]; 
    cb.DataSource = dt; 
    cb.DisplayMember = "articleName"; 
    cb.ValueMember = "id"; 
} 

"getAllFromDB" il metodo esegue la selezione dalla tabella articoli e restituisce DataSet. Ora il mio problema è qui. Quando uso cb.SelectedValue posso ottenere il valore id del nome dell'articolo. Questo è Ok e buono. Ma quando uso cb.SelectedItem sta mostrando "System.Data.DataRowView".
Per favore potresti aiutarmi, come posso ottenere il nome dell'articolo come usando cb.selectedItem?
Cordiali saluti.

+0

È possibile utilizzare 'cb.SelectedText', che ritengo non sia il modo giusto di fare. Sei sicuro che il set di membri del display sia appropriato? Se non dovresti ottenere questo errore – nawfal

+0

Habib, sei sicuro che ci sia una proprietà sull'oggetto dell'oggetto combo chiamato "ArticleName"? – nawfal

risposta

8

Provare i seguenti codici di linea, potrebbe essere utile per ottenere l'elemento selezionato.

 ComboBoxItem requiredItem = (ComboBoxItem)cboType.SelectedItem; 
     string value = requiredItem.Content.ToString(); 

EDIT:

Spiacenti, la ComboBoxItem sopra sarà funziona solo nel caso di .Net Framework 4.5, è in System.Windows.Controls namespace. Fare riferimento alle seguenti parti del codice per la risposta e verificare

 DataTable dtable = (DataTable)comboBox1.DataSource; 
     label1.Text = dtable.Rows[comboBox1.SelectedIndex][0].ToString();//gives you article id 
     label2.Text = dtable.Rows[comboBox1.SelectedIndex][1].ToString();//gives you article name 
+0

Che cos'è ComboboxItem? Ci scusiamo per il mio stato da principiante. –

+0

È una classe, che rappresenta l'elemento presente nella casella combinata –

+0

È buona, ma come si usa questa classe? –