复制DataGridView';将行转换为另一个DataGridView
本文关键字:DataGridView 转换 另一个 复制 | 更新日期: 2023-09-27 17:59:07
所以基本上我有2个DataGridView
,我需要将行从一个复制到另一个。
到目前为止,我已经尝试过:
DataGridViewRowCollection tmpRowCollection = DataGridView1.Rows;
DataGridViewRow[] tmpRowArray = new DataGridViewRow[tmpRowCollection.Count];
tmpRowCollection.CopyTo(tmpRowArray, 0);
DataGridView2.Rows.AddRange((DataGridViewRow[]) tmpRowArray));
但它一直在说
"Row provided already belongs to a DataGridView control."
那么,复制行内容的最佳方式是什么(两个DataGridView
都有相同的列)?
您可以在以下链接中使用该函数
private DataGridView CopyDataGridView(DataGridView dgv_org)
{
DataGridView dgv_copy = new DataGridView();
try
{
if (dgv_copy.Columns.Count == 0)
{
foreach (DataGridViewColumn dgvc in dgv_org.Columns)
{
dgv_copy.Columns.Add(dgvc.Clone() as DataGridViewColumn);
}
}
DataGridViewRow row = new DataGridViewRow();
for (int i = 0; i < dgv_org.Rows.Count; i++)
{
row = (DataGridViewRow)dgv_org.Rows[i].Clone();
int intColIndex = 0;
foreach (DataGridViewCell cell in dgv_org.Rows[i].Cells)
{
row.Cells[intColIndex].Value = cell.Value;
intColIndex++;
}
dgv_copy.Rows.Add(row);
}
dgv_copy.AllowUserToAddRows = false;
dgv_copy.Refresh();
}
catch (Exception ex)
{
cf.ShowExceptionErrorMsg("Copy DataGridViw", ex);
}
return dgv_copy;
}
http://canlu.blogspot.com/2009/06/copying-datagridviewrow-to-another.html
您需要首先从原始视图中克隆行,然后添加到新视图中。http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.clone.aspx
我建议为此使用后备DTO。与其直接处理行,不如创建一个包含GridViews的所有列的DTO,然后使用它们的List作为DataSource。然后,添加/删除行所要做的就是在列表中添加/删除DTO。
只需编写以下内容:
copyDGV.DataSource = mainDGV.DataSource;