我很可能會將這個問題向後看,但我很好奇。有沒有辦法根據DataGridView
中當前顯示的內容構建DataTable
?如何從DataGridView構建DataTable?
要清楚,我知道你可以做到這一點DataTable data = (DataTable)(dgvMyMembers.DataSource);
但是,其中包括隱藏的列。我只想從顯示的列中構建它。
希望是有道理的。
所以我最終嘗試了幾個答案的組合,因爲這似乎是最好的。以下是我正在嘗試的。基本上我是從DataSource創建DataTable,然後根據列是否可見來反向工作。但是,在刪除列之後,我在foreach
的下一次迭代中獲得Collection was modified; enumeration operation may not execute
。
我很困惑,因爲我不試圖修改DataGridView
,只有DataTable
所以這是怎麼回事?
DataTable data = GetDataTableFromDGV(dgvMyMembers);
private DataTable GetDataTableFromDGV(DataGridView dgv)
{
var dt = ((DataTable)dgv.DataSource).Copy();
foreach (DataGridViewColumn column in dgv.Columns)
{
if (!column.Visible)
{
dt.Columns.Remove(column.Name);
}
}
return dt;
}
由於DataTable綁定到DGV,因此會出現此錯誤;當您從DT中刪除列時,DGV的綁定列也會被刪除。在刪除列之前創建DT的副本,將您的賦值更改爲'dt'以:var dt =((DataTable)dgv.DataSource).Copy();' – 2011-06-09 20:30:14
這樣做,謝謝 – 2011-06-10 15:25:41