Datagridview不显示用户界面上的数据,但有数据在代码(调试)
本文关键字:数据 代码 调试 显示 用户界面 Datagridview | 更新日期: 2023-09-27 18:12:55
我需要将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总是空的。但是当我调试时,我看到数据中有内容。
如果我没记错的话,如果你想要ComboBox功能,你就不能将autogeneratecolcolumns设置为true。这需要在您的DataGridView中预定义为DataGridViewComboBoxColumn。
最佳实践也不是在dgv之间复制数据,而是在UI后面用DataTables
或List<T>
处理这个问题。
请参考以下答案:
DataGridView设置列单元格Combobox
将数据绑定到Windows Forms DataGridView控件
编辑:在UI后面的数据表中处理您的数据,而不是直接在dgv之间复制行,似乎可以解决您的问题。这将消除对Copy DGV方法的需要,并使您的生活轻松得多。
步骤如下:
- 获取DataTable格式的数据(
myData
) 实例化一个BindingSource:
BindingSource binding = new BindingSource();
Assign datatable to binding source:
binding.DataSource = myData;
然后将绑定源分配给相关的dgv。
myDataGridView.DataSource = binding;
然后,你可以重新分配你的绑定,或者为新的DGV创建新的绑定,并将相同的数据表分配给新的绑定,而不是在你的DGV中复制行。
我希望这是更清楚的,我已经正确理解了这个问题。