我需要将DGV从有界DGV复制到正常的DGV。
原因:我需要在从数据集加载后添加组合框列,并且在绑定的DGV上不可能。所以我试着复制新DGV中的内容。任何更好的想法??
我用它来复制dgv:copy Datagrids
然后我写了这个用按钮测试它:
private void button1_Click(object sender, EventArgs e)
{
dgvExcel2.AutoGenerateColumns = true;
dgvExcel2 = CopyDataGridView(dgvExcel);
dgvExcel2.Refresh();
dgvExcel2.Show();
dgvExcel2.Update();
}
(更新,显示,刷新只是为了尝试某些东西,因为它不起作用)
当我在UI上运行程序时,dgvExcel2始终为空。 但是当我调试时,我发现数据中有内容。
答案 0 :(得分:0)
如果我没记错,如果你想要ComboBox功能,你就不能将AutoGenerateColumns设置为true。这需要在DataGridView中预定义为DataGridViewComboBoxColumn。
最佳做法也不是将数据复制到DGV或从DGV复制数据,而是使用DataTables
或List<T>
在UI后面处理此数据。
请参阅以下答案:
DataGridView set column cell Combobox
Bind Data to the Windows Forms DataGridView Control
修改强>
在UI后面的数据表中处理数据,而不是直接在DGV之间复制行似乎可以解决您的问题。这将消除对复制DGV方法的需要,并使您的生活更轻松。
步骤将:
myData
)实例化BindingSource:
BindingSource binding = new BindingSource();
将数据表分配给绑定源:
binding.DataSource = myData;
然后将该绑定源分配给相关的DGV。
myDataGridView.DataSource = binding;
然后,您可以重新分配绑定,或为新DGV创建新绑定,并为新绑定指定相同的数据表,而不是在DGV上复制行。
我希望这更清楚,我已正确理解了这个问题。