本人在做WinForm开发时,想设置DataGridView中一些行不显示出来,方法如下:
this.DataGridView.Rows[i].Visible = false;
但系统总是出现BUG,提示信息为:"与货币管理器的位置关联的行不能设置为不可见。" 请教各位如何才能实现DataGridView中设置行不显示?

解决方案 »

  1.   

    this.DataGridView.BindingContext[dataGridView.DataSource].SuspendBinding();
    this.DataGridView.Rows[i].Visible = false;
    dataGridView.BindingContext[dataGridView.DataSource].ResumeBinding();
    试下看看。绑定之后要隐藏行很麻烦,排序,数据源更改了之后容易出问题的,现在还没找到什么好办法。
      

  2.   

    那你就用DataView.RowFilter来过虑不显示的行.
      

  3.   

    DataView.RowFilter 怎么用啊!拜托写清楚点,行不!
      

  4.   

    DataSet newDataSet = 根据你的DataGridView返查出一个DataSet;//myWebService.GetDataSet();
    BindingManagerBase manager = this.BindingContext[dataSet1, "Customers"];
    manager.SuspendBinding();
    //隐藏行操作
    manager.ResumeBinding();
    这里是需要有一个SuspendBinding()的操作,首先把绑定数据挂起,然后就可以对控件中的数据进行操作了,在操作完毕之后,利用ResumeBinding()操作取消挂起,就可以按照自己设想的结果显示数据了。 推测:由于在DataGridView绑定数据之后,会对屏幕进行一个绘制控件,所以在绑定了数据之后,无法在撤销绑定之前改动数据,因为对于数据的改动无法自动引起控件绘制的改动,于是要先进行SuspendBinding()操作,把绑定挂起,这样对数据操作完之后,再进行ResumeBinding(),系统会对控件进行重新绘制,绑定新的数据,就会显示改动后的数据