如何向datagridview添加新行?

Bod*_*odi 7 c# datagridview

我有DataGridView填充数据源(SQL)的数据.现在我想添加一个新行,但我不能,因为新数据无法添加到有界DataGridView ...

我试图:

dataGridView1.Source = null;
dataGridView1.Rows.Add("1");
Run Code Online (Sandbox Code Playgroud)

但它清除了我之前在表格中的数据.怎么做,添加新行而不删除以前的数据?

cas*_*One 6

当您将设置DataSource属性null,你基本上是删除所有来自数据DataGridView(因为它不知道该怎么绑定了).

你有两个选择.第一种是更新基础数据源.我们假设它是一个DataTable.在这种情况下,你会做类似的事情:

DataTable dt = dataGridView1.Source as DataTable;
dt.Rows.Add(new object[] { ... });
Run Code Online (Sandbox Code Playgroud)

接下来DataGridView将会了解更改(请注意,如果您没有绑定到未实现INotifyCollectionChanged接口的内容,则必须调用该ResetBindings方法以使网格刷新).

另一种选择是让DataGridView管理行.您可以通过手动添加使用的每个项目做到这一点Add的方法DataGridViewRowCollection通过返回的Rows属性:

foreach (var item in source)
{
    dataGridView1.Rows.Add("1", "2", "3", ...);
}
Run Code Online (Sandbox Code Playgroud)

我不会说第二种解决方案是最佳的,但它会起作用.

最后,假设您绑定到DataTable(或来自基础数据源的数据的某些其他实现),这对更新底层数据源没有任何作用(这将是一个单独的问题).