2011-12-16 8 views
0

私は名前と値のペアのリストを持っています。私は素晴らしいレポート形式にしたいと思っています。これをReportViewerオブジェクトのデータソースとして使用できますか?これはWinFormsとASPにあります。レポートビューアを辞書<string,int>とデータソースとしてバインドする方法はありますか?

+0

はT彼は 'ReportViewer' WPFコントロールですか?もしそうなら、あなたは標準的なアイテムバインディングと同じ方法であなたが望むものを達成できると思います。そうでない場合は、おそらくこの質問は関連しています:http://stackoverflow.com/questions/837625/using-ms-reportviewer-in-wpf –

答えて

3

私はDataTableのに辞書を変換し、データソースとして使用することをすることができました

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; 

ほら

+0

内部でデータソースの名前の付いたキー(列/行)をどのように参照しますかrdlcデザインモード?私は '= Fields(" somekey ")!FirstName.Value'と' = Fields!FirstName.Value( "somekey") 'whithout success – Bellash

+0

@Bellash残念だが、それはずっと前だし、覚えていない。 –

0

レポートに表示する項目をカプセル化するクラスを作成する必要があると思います。クラスをレポートにバインドする方法については、my answerthis questionを参照してください。

コードはVB.NETにありますが、かなり簡単にそれに従うことができます。

0

ReportViewerで自然にバインドしないとは思いません。バインドするプロパティを持つカスタムオブジェクトのリストに入れるだけです。

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); 
} 
関連する問題