您試圖顯示一個ArrayList
,其中包含一些DataRow
對象,而DataGridView
顯示DataRow
的屬性。它是預期的。
但可能你已經注意到,當你在DataGridView
中顯示DataTable
時,控件顯示的是列而不是屬性。
爲什麼?顯示DataTable
並顯示DataRow
對象列表有什麼區別?
這裏的區別是,DataGridView
顯示DataTable
這是DataView
類型它實現ITypedList
的DefaultView
屬性。因此,它顯示了GetItemProperties
返回的內容,實際上是從DataTable
詢問的,它是表列的列表。
如何在DataGridView
中顯示DataRow
對象的列表?
只需將它們添加到具有相同原始表格架構的表格即可。對於examle:
private void Form1_Load(object sender, EventArgs e)
{
var originalTable = new DataTable();
originalTable.Columns.Add("C1");
originalTable.Columns.Add("C2");
//Original data
originalTable.Rows.Add("A", "B");
originalTable.Rows.Add("X", "Y");
originalTable.Rows.Add("A", "B");
originalTable.Rows.Add("X", "Y");
//An ArrayList containing duplicate DataRow objects
var duplicates = new System.Collections.ArrayList();
duplicates.Add(originalTable.Rows[2]);
duplicates.Add(originalTable.Rows[3]);
//Create a Table having the same schema of the original table
var duplicatesTable = originalTable.Clone();
//Add copy of duplicates to the duplicate table
foreach (DataRow item in duplicates)
{
duplicatesTable.Rows.Add(item.ItemArray);
}
this.dataGridView1.DataSource = duplicates;
}
注意
你並不需要DataTable
工作時使用ArrayList
。您有不同的選項,例如使用Clone
方法DataTable創建具有相同架構的空DataTable,使用Copy
方法創建數據和架構副本,使用AsDataView
和AsEnumerable
和AsEnumerable().CopyToDataTable()
等執行一些搜索。
請勿發佈圖片。不是每個人都可以看到它們,這使我們很難幫助你...意味着你不太可能得到一個好的答案。將這些圖像轉換爲文本塊。 –
另外...發佈FindDuplicates()方法將有所幫助。 –