【问题标题】:Datagridview remove all columnsDatagridview 删除所有列
【发布时间】:2011-09-15 12:37:01
【问题描述】:

是否可以一次性删除数据网格中的所有列?

我知道我可以循环并一一删除它们,或者删除整个内容并创建它。

但可以简单地清除列并保留网格,以便用户可以重新开始。 即把它恢复到原来的状态。

好的,这是我的代码

private void PopulateGrid()
    {
        UserVGrid.AutoGenerateColumns = false;
        UserVGrid.Columns.Clear();
        List<string> _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 的列。

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

干杯

亚伦

【问题讨论】:

    标签: c# datagridview datagridviewcolumn


    【解决方案1】:

    DataGridView 列集合有一个 Clear() 方法。

    dataGridView1.Columns.Clear();
    

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

    dataGridView1.DataSource = null;
    

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

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

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

    【讨论】:

    • 虽然,您是否尝试删除所有数据但保留网格原样?要求将网格恢复到原始状态的部分问题不是很清楚。
    • 对不起,我真正想做的是删除它自己的coloum,而不仅仅是其中的数据。基本上数据视图是从文本文件配置中填充的,目前如果我打开它两次,我会得到重复。所以我想要一些代码来删除数据视图中的所有当前列。
    • @DevilWAH 在这种情况下,我的回答完全符合您的要求 - 对自动生成的列有明显的警告
    • 哦,jsut 认为这是一个双重问题,首先我需要能够清除列,但我还要添加到我每次传递的数组中。所以难怪我是gettign加倍colums。但是谢谢你,因为那个清晰的方法正是我想要的。
    【解决方案2】:

    这对我有用

     List<string> lstOverride = new List<string>();
                    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 设置为我需要下拉的列。

    【讨论】:

      【解决方案3】:

      清除数据表

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

      并将 datagridview 数据源设置为空

      dg.DataSource = Nothing
      

      【讨论】:

        【解决方案4】:

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

                dataGridView1.Columns.Remove("p_Comment");
        

        对于删除所有列,您可以使用

        dataGridView1.Columns.Clear();
        

        【讨论】:

          【解决方案5】:

          这让我可以从 datagridview 中删除所有数据和列标题

                      ds2.Tables.Clear();
                      dataGridView1.DataSource = null;
                      dataGridView1.Columns.Clear();
          

          【讨论】:

            猜你喜欢
            • 2014-09-30
            • 1970-01-01
            • 2017-04-03
            • 1970-01-01
            • 1970-01-01
            • 2018-08-08
            • 2016-11-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多