プログラムのWebサービスから生成された大量のデータセットがあります。このデータをDataGridに表示する必要がありますが、返されるデータのコレクションはすべて異なる形式(1つは3列、次は7列)であるため、このデータを保持する特定のオブジェクトを作成できません。この情報を表示するのに問題があります。今、私はこの方法を使おうとしています。データをKeyValuePairsの2次元リストに入れました。キーはこのデータが属する列であり、値はその行の出力です。これが私が今試していることです。
private void SetDataValuesExecute(List<List<KeyValuePair<string,object>>> Data)
{
ResultsCollection = Data;
ValuesDataGrid.Columns.Clear();
foreach (string colName in Data[0].Select(x => x.Key).ToList())
{
DataGridTextColumn tempCol = new DataGridTextColumn();
tempCol.Header = colName;
Binding bind = new Binding();
bind.Source = ResultsCollection.Select(x => x.FirstOrDefault(y => y.Key == colName).Value.ToString()).ToList();
tempCol.Binding = bind;
ValuesDataGrid.Columns.Add(tempCol);
}
}
ResultsCollectionは、バインディングのソースとして使用される不揮発性変数です。これは、DataGridを構築するために必要なすべての2次元リストデータのコピーです。
これは最初のエントリを見て、列ヘッダー値を抽出し、それに基づいて新しい列を作成します。バインディングステートメントは各行を調べ、指定された列のデータを取得し、それを列のバインディングとして設定しようとします。これにより、列名とその列に含まれるすべてのデータのリストの両方を取得できます。残念ながら、データのリストを列にバインドすると、データが表示されなくなります。
だから私の質問は:列バインディングが実際にデータを表示するためにデータをフォーマットするにはどうすればよいですか?私はこの状況にすべて間違って近づいていますか?私はかなり困惑しているので、どんな助けでもありがたいです。