Datagridview删除所有列

是否可以在单个匹配中从数据网格中删除所有列?

我知道我可以循环并逐个删除它们,或删除整个事物并创建它。

但是可以简单地清除列并将网格留在原位,以便用户可以重新开始。 即将其恢复到原始状态。

好的,这是我的代码

private void PopulateGrid() { UserVGrid.AutoGenerateColumns = false; UserVGrid.Columns.Clear(); List _values = populate.GetVaribles; foreach (var line in _values) { if (!line.Contains("Startind")) { string[] newline = line.Split('='); DataGridViewColumn newColumn = new DataGridViewTextBoxColumn(); newColumn.Name = newline[0]; newColumn.HeaderText = newline[1]; newColumn.ToolTipText = newline[2]; UserVGrid.Columns.Add(newColumn); } } 

所以我们假设_values有apple,pear作为值

运行此方法一次,我得到一个数据网格,其中包含两个名为apple和pear的列。

这次运行它第二次使用_values包含char,table。
我最终得到了4支苹果,梨,椅子和桌子。 我想要的是它第二次运行它清除网格然后应用新的colums。

干杯

亚伦

DataGridView列集合具有Clear()方法。

 dataGridView1.Columns.Clear(); 

这不适用于绑定的datagridview和自动生成的列 – 在这种情况下,只需将数据源替换为null或使用空数据源:

 dataGridView1.DataSource = null; 

或者关闭自动生成并在代码中创建列:

 dataGridView1.AutoGenerateColumns = false; DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn(); dataGridView1.Columns.Add(col); 

Clear()方法将删除这些手动生成的列。

这对我有用

  List lstOverride = new List(); lstOverride.Add("IssuerOnly"); lstOverride.Add("TickerOnly"); lstOverride.Add("All"); lstOverride.Add("Private Equity"); lstOverride.Add("Ignore"); DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn(); cmb.HeaderText = "Override"; cmb.Name = "cmb"; cmb.DataSource = lstOverride; cmb.DataPropertyName = "Override"; dgvWebData.Columns.Add(cmb); 

我添加了一个DataGridViewComboBoxColumn ,并将其DataPropertyName设置为我需要下拉的列。

清除数据表

 If ds.Tables.Count > 0 Then ds.Tables(0).Columns.Clear() ds.Tables(0).Rows.Clear() End If 

并将datagridview数据源设置为空

 dg.DataSource = Nothing 

要删除dataGridView列,您可以这样做“P_Comment”是列名称

  dataGridView1.Columns.Remove("p_Comment"); 

并删除您可以使用的所有列

 dataGridView1.Columns.Clear();