2017-05-29 2 views
0

ich einige Daten in DB haben, und wählen Sie sie in eine dynamic Variable ..Populate Typ Dynamic Combobox

dynamic _data; 
_data = db.Select("select * from foobar"); 

Dieser endet mit so etwas wie (dynamische Ansicht) up:

0 => customername => "blabla", 
    companyname => "haha" 
1 => customername => "hihi", 
    companyname => "hoho" 

und so weiter.

diese dynamische Art Debuggen zeigt mir auch, dass die Daten vorhanden sind als (Ergebnisansicht)

0 => key => "customername", value => "blabla", 
    key => "companyname", value => "haha" 
1 => key => "customername", value => "hihi", 
    key => "companyname", value => "hoho" 

Was will ich achive ist diesen Inhalt einer Combobox hinzufügen wie

cmbGroup.DisplayMember = "customername"; 
cmbGroup.ValueMember = "customername"; 
cmbGroup.DataSource = _data; 

oder

cmbGroup.DisplayMember = "key"; 
cmbGroup.ValueMember = "value"; 
cmbGroup.DataSource = _data; 

Aber beide Fälle dont wor k ... es zeigt mir immer System.Dynamc.ExpandoObject als Comboboxitems.

Ich habe versucht, die Daten in eine Liste

private List<string> dyn2List() 
{ 
    List<string> ls = new List<string> { }; 
    foreach(var d in _data) 
    { 
     ls.Add(d.customername); 
    } 
    return ls; 
} 

und fügen Sie es, zu konvertieren, was irgendwie tatsächlich funktioniert, aber dieses nicht scheint die nette Art und Weise zu sein, wenn Sie wissen, was ich meine. Auch, wenn ich die Liste zu konvertieren .... Ich muss vermeiden, Duplikate und dies bringt eine Menge von anderen Fehlern ... (sagte kurz: weiß nicht wie)

Also meine Frage: Gibt es sowieso zu Verwenden Sie <dynamic> als Datenquelle in einer Combobox?

Alle zurückgegebenen Werte sind Zeichenfolge atm. Also ist es immer noch "einfach".

Google kam nicht mit den richtigen Ergebnissen. Oder vielleicht hat es die richtigen gefunden, aber ich konnte sie nicht wie nötig abgleichen. Diese

ist, wie meine dynamische Daten sieht aus wie

enter image description here

Antwort

0

Versuchen Sie Ihre Daten in das Formular Projizieren Sie wollen:

var _data = db.Select("select * from foobar") 
    .Select(d => new 
     { customername = d.customername, 
      companyname = d.comapanyname 
     }); 

comboBox1.DisplayMember = "customername"; 
comboBox1.ValueMember = "companyname"; 

comboBox1.DataSource = _data; 
+0

aber ich weiß nicht, wie viele Ergebnisse Ich habe ... so das 'neue {}' wird mehrmals aufgerufen ... wie kann ich meine dynamischen Daten plündern? – Dwza

+0

Da ich Ihre Daten nicht habe, habe ich meine eigenen Demo-Daten erstellt. Ersetzen Sie meine 'Daten' durch Ihre' _Daten'. Funktioniert es? – Crowcoder

+0

noch Ergebnisse mit Multiplizieren 'System.Dynamic.ExpandoObject' – Dwza