在C#中将字典绑定到DataGridView?

6
我有一个以下的字典项。
Dictionary<string, List<StrikePrice>>

在哪里

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;
    }
}

我想将这个字典分配给DataGridView
this.dataGridViewTest.DataSource = listSmiles;

我明白一个字典无法被赋给DataSource,因为它没有继承自IList接口。

有没有办法将这个字典元素分配给数据表格?

4个回答

3

我知道这篇文章有点老了,但也许对某些人有所帮助。这个一行解决方案对我很有效。

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

gridTAV是一个DataGridView。dTAV是一个字典,其键是日期(不重要),值是一个类。

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

由于该值是一个类,因此“ToArray()”方法对我没有用,因为它没有“解包”类属性。
请注意,这不会将KEY放入网格中,但我确实不需要它。

此外,为了启用排序等功能,您可以将列表转换为Datatable并绑定它。请查看此处https://dev59.com/I3RB5IYBdhLWcg3wpYmo获取代码。 - pStan

2
是的,通过调用字典的ToArray方法。
        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();

2
你尝试过使用字典的Values属性吗?它可以帮助你更方便地访问字典中的值。请注意保留HTML标签。
this.dataGridViewTest.DataSource = listSmiles.Values.ToList();

-1
如果问题涉及WPF或Silverlight,这个article提供了一个解决方案。
我一直在使用它,即使对于大量列也表现良好。

@Phillip: 这是针对Winforms应用程序的。 - tush1r

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接