我有DataGridView填充数据源(sql)的数据.现在我想添加一个新行,但我不能,因为新数据无法添加到有界DataGridView …
我试图:
dataGridView1.Source = null; dataGridView1.Rows.Add("1");
解决方法
当您将
DataSource
property设置为null时,您实际上是从
DataGridView
中删除所有数据(因为它不知道要绑定到什么).
你有两个选择.第一种是更新基础数据源.我们假设它是DataTable
.在这种情况下,你会做类似的事情:
DataTable dt = dataGridView1.Source as DataTable; dt.Rows.Add(new object[] { ... });
然后DataGridView将接收更改(请注意,如果您没有绑定到未实现INotifyCollectionChanged
interface的内容,则必须调用ResetBindings
method以使网格刷新).
另一个选择是让DataGridView管理行.您可以使用Rows
property返回的DataGridViewRowCollection
上的Add
method手动添加每个项目来执行此操作:
foreach (var item in source) { dataGridView1.Rows.Add("1","2","3",...); }
我不会说第二种解决方案是最佳的,但它会起作用.
最后,假设您绑定到DataTable(或来自基础数据源的数据的其他实现),这对更新底层数据源没有任何作用(这将是一个单独的问题).