日期:2014-05-18  浏览次数:21004 次

关于DataGridView窗体加载时显示自定义列的问题
我想在WinForm加载时在dataview中把原数据清除,显示自定义的列。可是显示出来的除了自定义列,原数据也都显示出来了。DataGridView.Columns.Clear();这个方法好象没起做用。但写在按钮里是好用的。
C# code

  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();
           [color=#FF0000]clear()方法没有清除显示数据 [/color]


            dgvInfo.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { ProductName });
        
        }



------解决方案--------------------
应该不是没有清楚 而是后来又加载了数据吧
------解决方案--------------------
datagirdview.datasoure = nothing
------解决方案--------------------
dgvInfo.Columns.Clear();这行代码是能 清除原来的列的,
在初始化的时候你看看还有没有其他地方有代码设置了列。
你加一个断点,

------解决方案--------------------
C# code

string path = "c:\\test\\abc.txt";
        string date = DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "");
        path = path.Replace(".", "_" + date +".");  //有日期的
        path = path.Substring(0, path.IndexOf("_")) + path.Substring(path.IndexOf("."));//去掉日期的
string path = "c:\\test\\abc.txt";
        string date = DateTime.Now.ToString().Replace("-", "").Replace(":", "").Replace(" ", "");
        path = path.Replace(".", "_" + date +".");  //有日期的
        path = path.Substring(0, path.IndexOf("_")) + path.Substring(path.IndexOf("."));//去掉日期的

------解决方案--------------------
加上
C# code

dgvInfo.AutoGenerateColumns = false;

------解决方案--------------------
探讨
加上
C# code
dgvInfo.AutoGenerateColumns=false;
試試

------解决方案--------------------
楼上正解