我想在WinForm加载时在dataview中把原数据清除,显示自定义的列。可是显示出来的除了自定义列,原数据也都显示出来了。DataGridView.Columns.Clear();这个方法好象没起做用。但写在按钮里是好用的。  public Demo2()
        {
            InitializeComponent(); 
            //读取数据到DataSet(代码略)            dgvInfo.DataSource =  ds.Tables[0];
                    System.Windows.Forms.DataGridViewTextBoxColumn ProductName = new DataGridViewTextBoxColumn();
            ProductName.DataPropertyName = "productname";
            ProductName.HeaderText = "商品名称";
            ProductName.Name = "ProductName";
            ProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
            dgvInfo.Columns.Clear();
           clear()方法没有清除显示数据 
            dgvInfo.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { ProductName });
        
        }

解决方案 »

  1.   

    datagirdview.datasoure = nothing 
      

  2.   

    dgvInfo.DataSource = null ;
    dgvInfo.Columns.Clear();
      

  3.   

    dgvInfo.Columns.Clear();这行代码是能 清除原来的列的,
    在初始化的时候你看看还有没有其他地方有代码设置了列。
    你加一个断点,
      

  4.   


     public Demo2()
            {
                InitializeComponent(); 
                //读取数据到DataSet(代码略)            dgvInfo.DataSource =  ds.Tables[0];
                        System.Windows.Forms.DataGridViewTextBoxColumn ProductName = new DataGridViewTextBoxColumn();
                ProductName.DataPropertyName = "productname";
                ProductName.HeaderText = "商品名称";
                ProductName.Name = "ProductName";
                ProductName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
                dgvInfo.Columns.Clear();  //这时,列还没加载(加载事件还没执行)            dgvInfo.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { ProductName });
            
            }
      

  5.   

    加上dgvInfo.AutoGenerateColumns = false;試試