如何向datagridview添加新行?
我有DataGridView填充数据源(SQL)的数据。 现在我想添加一个新行,但我不能,因为新数据无法添加到有界DataGridView …
我试图:
dataGridView1.Source = null; dataGridView1.Rows.Add("1");
但它清除了我之前在表格中的数据。 怎么做,添加新行而不删除以前的数据?
当您将DataSource
属性设置为null
,您实际上是从DataGridView
删除所有数据(因为它不知道要绑定到什么)。
你有两个选择。 第一种是更新基础数据源。 我们假设它是一个DataTable
。 在这种情况下,您可以执行以下操作:
DataTable dt = dataGridView1.Source as DataTable; dt.Rows.Add(new object[] { ... });
然后DataGridView
将接收更改(请注意,如果您没有绑定到未实现INotifyCollectionChanged
接口的内容 ,则必须调用ResetBindings
方法以使网格刷新)。
另一个选择是让DataGridView
管理行。 您可以通过使用Rows
属性返回的DataGridViewRowCollection
上的Add
方法手动添加每个项来执行此操作:
foreach (var item in source) { dataGridView1.Rows.Add("1", "2", "3", ...); }
我不会说第二种解决方案是最佳的 ,但它会起作用。
最后,假设您绑定到DataTable
(或来自底层数据源的数据的其他实现),这对更新底层数据源没有任何作用(这将是一个单独的问题)。
简短的回答是,你没有。
当您将DataSource
设置为null时,您已经破坏了DataGridView
与数据源之间的链接,因此其数据将不会保留。 您不能向绑定的DataGridView
添加行,因为它应该表示基础DataSource
的状态; 你有效地要求.net使你的表与它的后备存储不同步,首先打败了数据绑定的目的。
如果要向后备存储添加行,则应在DataSource
添加一行,而不是在DataGridView
。
也许你想手动和详细? 像这样的东西?
DataSet ds = new DataSet(); OleDbDataAdapter adapter = null; adapter = new OleDbDataAdapter("SELECT * FROM WHERE", conn); adapter.Fill(ds); dataGridView1.ColumnCount = 5; //how many columns returns your SQL query? starts with 0 dataGridView1.Columns[0].Name = "COl-1"; dataGridView1.Columns[1].Name = "COl-2"; dataGridView1.Columns[2].Name = "COl-3"; dataGridView1.Columns[3].Name = "COl-4"; dataGridView1.Columns[4].Name = "COl-5"; DataTable dt = ds.Tables[0]; foreach (DataRow dr in dt.Rows) { dataGridView1.Rows.Add( (dr["COL_HEADER_NAME1"].ToString()), (dr["COL_HEADER_NAME2"].ToString()), (dr["COL_HEADER_NAME3"].ToString()), (dr["COL_HEADER_NAME4"].ToString()), (dr["COL_HEADER_NAME5"].ToString())); }
您只需使用行集合的添加方法添加行
me.datagridview1.rows.add("first","second","third");
您可以使用数组集合添加任意数量的项目。
上述就是C#学习教程:如何向datagridview添加新行?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1029102.html