2016-04-26 3 views
0

Ich habe eine Methode, die das Objekt ComboBox und die Abfrage erhält, die auf die Elemente geladen werden soll.Programmgesteuertes Auswählen eines Elements in der Combobox mithilfe der ValueMember-Eigenschaft

Das Verfahren stellt auch für 2 weitere Artikel:

1.Die DB Spalte Namen der Tabelle und setzt sie in die Combobox ‚s DisplayMember Eigenschaft

2. id jeden Datensatz unter dieser DB-Tabellenspalte Name und setzt es in die Combobox ‚s ValueMember Eigenschaft

public void DatabaseColumnRecordsToCombobox(ComboBox cbx, String query, String displayMember, String valueMember) 
{ 
    try 
    { 
     cmd = new MySqlCommand(query, connection); 
     da = new MySqlDataAdapter(cmd); 
     tbl = new DataTable(); 
     da.Fill(tbl); 
     cbx.DataSource = tbl; 
     cbx.DisplayMember = displayMember; 
     cbx.ValueMember = valueMember; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    finally 
    { 
     this.CloseConnection(); 
    } 
} 

ich die Methode verwenden, indem eine Abfrage mit 2 Spalten zu schaffen, die ID und ihren entsprechenden Namen. Und es in den ComboBox ‚s DisplayMember und ValueMember Speicherung:

DatabaseColumnRecordsToCombobox(cmbSupplier, "SELECT Id, Supplier_Name FROM Supplier WHERE Enable_Flag=1 ORDER BY Supplier_Name", "Supplier_Name", "Id"); 

ich für die lange Einleitung entschuldigen, ich möchte nur all verstehen, wie mein Programm funktioniert, bevor mein Problem zu erzählen. Das Problem ist also, wie wähle ich das Standardelement DataGridView mit der ComboBox 's ValueMember Eigenschaft?

Alles, was ich weiß, wenn ich ein Element programmatisch auswähle, ist cmbCategory.SelectedItem = "Supplier A", aber was ich brauche, ist mit der ValueMember auszuwählen. Auf diese Weise kann ich das Standardelement per ID festlegen.

Antwort

1

Nur SelectedValue statt:

comboBox1.SelectedValue = "2"; 

Ein sehr einfaches Beispiel, was nur zu zeigen, ich meine:

 DataTable dt = new DataTable(); 
     dt.Clear(); 
     dt.Columns.Add("Id"); 
     dt.Columns.Add("Supplier_Name"); 
     DataRow r = dt.NewRow(); 
     r["Id"] = "1"; 
     r["Supplier_Name"] = "Supplier A"; 
     dt.Rows.Add(r); 
     r = dt.NewRow(); 
     r["Id"] = "2"; 
     r["Supplier_Name"] = "Supplier B"; 
     dt.Rows.Add(r); 
     r = dt.NewRow(); 
     r["Id"] = "3"; 
     r["Supplier_Name"] = "Supplier C"; 
     dt.Rows.Add(r); 

     comboBox1.DataSource = dt; 
     comboBox1.DisplayMember = "Supplier_Name"; 
     comboBox1.ValueMember = "Id"; 

     //This will set the ComboBox to "Supplier B" 
     comboBox1.SelectedValue = "2"; 
+0

Es hat funktioniert! Vielen Dank! Aber wollen Sie nur wissen, ob es in Ordnung ist, eine Integer für Combobox1.SelectedValue zu verwenden? z.B. 'comboBox1.SelectedValue = 1'. Ich habe eine Ganzzahl verwendet und es funktionierte immer noch, weiß nur nicht, warum das okay war. Übrigens, ich liebe dich, Mann! #nohomo –

+1

Ha ha kein Problem Mann! Eine ganze Zahl sollte ebenfalls funktionieren, da es sich um einen Objekttyp handelt. Sie sollten den gleichen Typ wie den Typ verwenden können, den Sie in Ihrem ValueMember haben. – MrApnea