2009-11-02 17 views
5

Ho una voce di dizionario come di seguitoAssociazione di un dizionario a DataGridView in C#?

Dictionary<string, List<StrikePrice>> 

dove

public class StrikePrice 
{ 
    public string Strike { get; private set; } 
    public string Price { get; private set; } 

    public StrikePrice(string strike, string price) 
    { 
     Strike = strike; 
     Price = price; 
    } 
} 

e desidero assegnare questo dizionario al DataGridView

this.dataGridViewTest.DataSource = listSmiles; 

Capisco che un dizionario non può essere assegnato allo DataSource in quanto non deriva dall'interfaccia IList.

C'è un modo per assegnare questo elemento di dizionario al datagrid?

+0

WPF o WinForms? –

+0

@Cameron: WinForms – tush1r

risposta

3

So che questo è un po 'vecchio, ma forse aiuterà qualcuno. Questa soluzione a riga unica ha funzionato per me

gridTAV.DataSource = dTAV.Values.ToList<TotalAccountValue>(); 

gridTAV è un DataGridView. dTAV è un dizionario. La chiave è una data (non importante) e il valore è una classe.

Dictionary<DateTime, TotalAccountValue> dTAV = new Dictionary<DateTime, TotalAccountValue>(); 

Dato che il valore era una classe il metodo "ToArray()" non ha funzionato per me, dal momento che non ha "spacchettare" le proprietà della classe.

Si noti che questo non inserisce la chiave nella griglia, ma non ne avevo proprio bisogno.

+0

Inoltre, per abilitare l'ordinamento, ecc. È possibile convertire l'elenco in Datatable e collegarlo. Guarda qui http://stackoverflow.com/questions/564366/convert-generic-list-enumerable-to-datatable per il codice. – pStan

-1

Se la domanda si riferisce a WPF o silverlight, questo article fornisce una soluzione.

L'ho usato e funziona bene, anche per un numero elevato di colonne.

+0

@Phillip: Questo è per l'applicazione Winforms. – tush1r

2

Hai provato a utilizzare la proprietà Valori del dizionario?

this.dataGridViewTest.DataSource = listSmiles.Values.ToList(); 
+0

@Kane: Ho provato a farlo, ma questo non ha funzionato. – tush1r

2

Sì, mediante chiamata ToArray del dizionario

 var g = this.dataGridView1; 
     var s = new Dictionary<string, string>(); 
     s.Add("1", "Test1"); 
     s.Add("2", "Test2"); 
     s.Add("3", "Test3"); 
     g.DataSource = s.ToArray(); 
Problemi correlati