我有一大組數據是從我的程序中的Web服務生成的。我需要在DataGrid中顯示這些數據,但返回的數據集合都有不同的格式(一個可能是3列,接下來的7個),所以我不能創建一個特定的對象來保存這些數據。我無法顯示此信息。現在我正在嘗試使用這種方法。我將數據放入KeyValuePairs的二維列表中。鍵是這個數據將屬於的列,該值是該行的輸出。這是我現在正在嘗試的。DataGridColumn使用動態生成的數據進行綁定
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的所有二維列表數據的副本。
這看起來第一個條目提取列標題值,並基於它創建新的列。綁定語句查看每一行,爲指定的列抓取數據,並嘗試將其設置爲列的綁定。這使我可以同時擁有列名和列中所有數據的列表。不幸的是,將數據列表綁定到列最終不會顯示任何數據。
所以我的問題是:我如何需要格式化我的數據,以便列綁定實際顯示數據?我接近這種情況都錯了嗎?任何幫助表示讚賞,因爲我很難過。
如果你只傳遞一行它是否工作?很確定它正在變得比第一個列更少,拋出和超出範圍異常。我認爲你將需要迭代通過行來找到最大列數,然後將每行填充到最大數量。 – Paparazzi
@Blam每個單獨的一組數據的所有行具有完全相同的字段(相同的列數)。我得到一組新的數據以更改列號,當發生這種情況時,我將清除DataGrid並將其替換爲新數據。 – Nerzugal