C# Dictionary als Datasoure für Grid

Basinski

Newbie
Registriert
Jan. 2013
Beiträge
1
Guten Morgen!

Ich stehe im moment ein bisschen auf dem Schlauch.
Ich habe innerhalb einer Klasse ein Dictionary, welches auch dort befüllt wird usw.
Diese Klasse wird beim laden meiner Form initialisiert und ist für die Form als Public definiert.

Nun muss ich daten aus dem Dictionary anzeigen. Hierzu wollte ich ein DataGridView nutzen.
Hab schon den Onkel Google befragt und dort stand, dass ich über das Grigview die Datenquelle auf Projektdatenquelle gehe und dann "Objekt" wähle.
Dort wird mir mein objekt aber nciht angezeigt.

Auch ein versuch das Dict. nochmal zu referenzieren (Objektverweis) funktioniert leider nciht so ganz.

Vorgestellt hab ich mir das in etwa so:
Code:
    public partial class FrmFrictionTester : Form
    {
        public PLCComm SPS = new PLCComm("TEST");
        public FrmFrictionTester()
        {
            InitializeComponent();
            dataGridView1.DataSource = SPS.Parameter; //SPS.Parameter ist das Dictionary
   
        }
    }
}

Hat sowas schon mal einer gemacht??
Gruß
Sascha
 
Ohne mich jetzt allzu tief reinzudenken, Du könntest das Dictionary in ein DataTable-Objekt überführen, welches als DataSource für Dein Grid dient.
 
Zieh noch eine BindingSource-Komponente in das Formular.
Das Dictionary "dic" wird an die Bindingsource gebunden und
diese dann an das DataGridView. Sollte dann funktionieren.
Code:
  bindingSource1.DataSource = dic;
  dataGridView1.DataSource = bindingSource1;
 
Was auch immer in dem Dictionary steht, hier ein Beispiel mit Key und Value als Strings und LINQ

Code:
var dictionary = new Dictionary<string, string> { { "Eins", "Hans" }, { "Zwei", "Max" } };
dataGridView1.DataSource = dictionary.Select(
           x => new
              {
                  Id = x.Key,
                  Name = x.Value
               }).ToList();

Und so sieht es aus.
[ATTACH=CONFIG]316394.vB[/ATTACH]
 

Anhänge

  • dictionary_result.JPG
    dictionary_result.JPG
    13,6 KB · Aufrufe: 103
LINQ ist ja immer wieder niedlich.
Hier die minimale Alternative:
Code:
var dictionary = new Dictionary<string, string> { { "Eins", "Hans" }, { "Zwei", "Max" } };
dataGridView1.DataSource = dictionary.ToList();
 
Rowana schrieb:
LINQ ist ja immer wieder niedlich.
Hier die minimale Alternative:
Code:
var dictionary = new Dictionary<string, string> { { "Eins", "Hans" }, { "Zwei", "Max" } };
dataGridView1.DataSource = dictionary.ToList();

In dem Fall sicherlich Ok, aber ersten heißen die Spalten jetzt "Key" und "Value" und was ist, wenn ein komplexeres Object als Value vorliegt? Daher ist der Weg mit dem Select-Statement sicherlich der, in meinen Augen, bessere Weg.
 

Ähnliche Themen

Zurück
Oben