如何将Report Viewer与Dictionary <string,int>绑定为数据源?</string,int>

时间:2011-12-16 14:54:32

标签: c# data-binding reportviewer

我有一个名单 - 值对的列表,我希望以一种漂亮的报告格式。是否可以将其用作ReportViewer对象的数据源?这是在WinForms和ASP。

4 个答案:

答案 0 :(得分:3)

我能够将Dictionary转换为DataTable并将其用作DataSource。

var table = new DataTable();
var kvps = dictionary.ToArray();
table.Columns.AddRange(kvps.Select(kvp => new DataColumn(kvp.Name)).ToArray());
table.LoadDataRow(kvps.Select(kvp => kvp.Value).ToArray(), true);
bindingSource.DataSource = table;

答案 1 :(得分:0)

我相信你必须创建一个类来封装你想在报告中显示的项目。有关如何将类绑定到报表,请参阅my answerthis question

VB.NET中的代码,但你可以很容易地遵循它。

答案 2 :(得分:0)

我认为这不会在ReportViewer中自然绑定。只需将它们放在具有要绑定的属性的自定义对象列表中即可。这不会是很多开销(如List。

答案 3 :(得分:0)

词典不适合作为列表的数据源。它们经过优化,可以检索给定键的值。不过,您可以从字典中检索键,值和键/值对,如下所示:

var keys = dict.Keys;
var values = dict.Values;
var keyValuePairs = dict.OrderBy(x => x.Value);
foreach (KeyValuePair<string, int> item in keyValuePairs) {
    Console.WriteLine("Key = {0}, Value = {1}", item.Key, item.Value);
}