2016-04-21 21 views
1

Ich brauche Daten aus der Tabelle item_details und müssen an eine Combobox binden.So binden Sie Daten an eine Combobox aus einer Tabelle in einer MySql-Datenbank (WPF)

Es gibt zwei Spalten item_id und item_name. Ich möchte alle Daten in item_id Spalte in die Combobox laden und wenn der ausgewählte Wert der Combobox geändert wird, sollte es in ein Textfeld mit dem entsprechenden Zeichenfolgenwert der Elementname Spalte widerspiegeln.

bisher habe ich versucht, zwei Möglichkeiten,

http://www.c-sharpcorner.com/uploadfile/syedshakeer/bind-combobox-in-wpf/ http://www.codeproject.com/Articles/20439/WPF-DataBinding

aber das Problem ist nichts in der Combobox angezeigt wird.

Hier ist mein Code.

public partial class ComboBoxBinding : Window 
{ 
    private readonly MySqlConnection _connection; 
    public ComboBoxBinding() 
    { 
     InitializeComponent(); 

     _connection = new MySqlConnection("server=localhost;user id=*****;password=******;database=onion;persistsecurityinfo=True"); 
     var dataAdapter = new MySqlDataAdapter("SELECT item_id, item_name FROM item_details", _connection); 


     DataSet ds = new DataSet(); 
     dataAdapter.Fill(ds, "item_details"); 

     // Method1 
     cmbItem1.ItemsSource = ds.Tables[0].Columns["item_id"].ToString(); 

     cmbItem1.DisplayMemberPath = ds.Tables[0].Columns["item_id"].ToString(); 
     cmbItem1.SelectedValuePath = ds.Tables[0].Columns["item_name"].ToString(); 
     // End of the Method1 


     // Method2 
     cmbItem1.DataContext = ds.Tables["item_details"].DefaultView; 
     cmbItem1.DisplayMemberPath = ds.Tables["item_details"].Columns["item_id"].ToString(); 
     cmbItem1.SelectedValuePath = ds.Tables["item_details"].Columns["item_name"].ToString(); 
     // End of the Method2 
    } 


    ~ComboBoxBinding() 
    { 
     _connection.Close(); 
    } 

    private void cmbItem1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     itemName1.Text = cmbItem1.SelectedValue.ToString(); 
    } 
} 

}

Hinweis habe ich versucht, Method1 und Method2 getrennt, aber beide sind in hier in dem gleichen Code nur für die Darstellung einbezogen.

Kann mir jemand vorschlagen, was ist der Fehler?

Antwort

1

Schließlich habe es :) die Details anzuzeigen, Code sollte wie folgt lauten (statt Method1 und Method2)

DataSet ds = new DataSet(); 
dataAdapter.Fill(ds, "item_details"); 
DataTable dt = ds.Tables[0]; 
cmbItem1.ItemsSource = ((IListSource) dt).GetList(); 
cmbItem1.DisplayMemberPath = "item_id"; 
cmbItem1.SelectedValuePath = "item_name"; 
Verwandte Themen