无法设置数据网格视图的行可见false

Co.*_*den 20 c# datasource datagridview

我有一个DataGridView我设置的地方DataSource:

taskerEntities te = new taskerEntities();
var OMsMasterDescriptiveIndicators = te.MyTable.Select(x => new lccls {Id = x.Id, name = x.name }).ToList();
MyGrid.DataSource = OMsMasterDescriptiveIndicators;
Run Code Online (Sandbox Code Playgroud)

和我class lccls一样

public class lccls
    {
        public string Id { get; set; }
        public Nullable<decimal> name { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

在某个事件中,我想让当前行不可见:

 MyGrid.Rows[5].Visible = false;
Run Code Online (Sandbox Code Playgroud)

但我无法做到这一点.而是抛出异常,并显示以下错误消息:

与货币经理的头寸相关联的行不能隐藏

我怀疑原因与设置有关DataSource,但为什么呢?

Co.*_*den 45

经过大量搜索,我得到了解决方案

CurrencyManager currencyManager1 = (CurrencyManager)BindingContext[MyGrid.DataSource];  
currencyManager1.SuspendBinding();
MyGrid.Rows[5].Visible = false;
currencyManager1.ResumeBinding();
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢.为什么隐藏行是如此复杂,我仍然在嘘?!?!? (7认同)
  • @Lev:_我仍然感到震惊为什么隐藏行是如此复杂?!?!?_它不是; 只需设置`CurrentCell = null` .. (5认同)
  • 我不得不改变`CurrencyManager currencyManager1 =(CurrencyManager)BindingContext [MyGrid.DataSource];`到`CurrencyManager currencyManager1 =(CurrencyManager)MyGrid.BindingContext [MyGrid.DataSource]; "让它运作起来 (4认同)

Moo*_* Pc 12

当前行索引在尝试隐藏当前单元格时会遇到此类错误,无法将yourDataGridView行visible属性设置为false

洗液:

当yourDataGridView数据源不为null时:

  CurrencyManager currencyManager1 = (CurrencyManager)BindingContext[yourDataGridView.DataSource];
                       currencyManager1.SuspendBinding();
                       yourDataGridView.Rows[Target Index].Visible = false;
                       currencyManager1.ResumeBinding();
Run Code Online (Sandbox Code Playgroud)

当yourDataGridView数据源为null时:

 yourDataGridView.CurrentCell = null;
 yourDataGridView.Rows[Target Index].Visible = false;
Run Code Online (Sandbox Code Playgroud)

  • +1 因为你的第二个解决方案对我有用。即使我绑定到 DataSet 并且 DataSource 不为空,第一个解决方案 ** 不** 工作!去搞清楚... (3认同)