【发布时间】:2013-09-27 07:58:15
【问题描述】:
我有一个DataGridView,我在其中设置了DataSource:
taskerEntities te = new taskerEntities();
var OMsMasterDescriptiveIndicators = te.MyTable.Select(x => new lccls {Id = x.Id, name = x.name }).ToList();
MyGrid.DataSource = OMsMasterDescriptiveIndicators;
与我的class lccls 一样
public class lccls
{
public string Id { get; set; }
public Nullable<decimal> name { get; set; }
}
在某个事件中,我想让当前行不可见:
MyGrid.Rows[5].Visible = false;
但我无法做到这一点。相反,会引发异常并显示以下错误消息:
无法创建与货币经理职位相关联的行 隐形
我怀疑原因与设置DataSource有关,但为什么呢?
【问题讨论】:
-
你把代码
MyGrid.Rows[e.RowIndex].Visible = false;放在哪里?奇怪的是,如果你使用任意的index,例如0,1,......它会成功隐藏该行。 -
我已经更改了 e.rowindex 但它仍然无法正常工作
-
您是否在运行时更改数据源(删除行)?
-
我没有删除行我只是隐藏行
-
是的,我明白了。我的意思是如果您在运行时更改数据源例如:启动数据源 1、2、3;并且您删除了记录 2;那么您打算使给定行在 DGV 中不可见。我已经阅读了您的答案,很可能这就是问题所在。最安全的方法是直接从 DGV 执行任何更新(或者,从数据源执行更新时,确保通过考虑所涉及的不同索引来考虑 DGV 中的变化)。
标签: c# datagridview datasource