无法编辑我的C#DataGridView中的任何列-有人知道原因吗?

无法编辑我的C#DataGridView中的任何列-有人知道原因吗?,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我正在尝试为DataGridView中的许多列启用编辑。现在,在任何人建议我阅读之前,我已经有了 总而言之(我引述): 基础数据源支持编辑 DataGridView控件已启用 EditMode属性值不是以编程方式编辑的 单元格、行、列和控件的只读属性都设置为false 所有这些都是简单的常识。我已确认已启用=true。我已经确认EditMode是EditOnKeystrokeOrF2我已经确认所有列(除了一列)都是ReadOnly=false 我觉得有趣的是第一行:- 基础数据源支持编辑 现

我正在尝试为DataGridView中的许多列启用编辑。现在,在任何人建议我阅读之前,我已经有了

总而言之(我引述):

  • 基础数据源支持编辑
  • DataGridView控件已启用
  • EditMode属性值不是以编程方式编辑的
  • 单元格、行、列和控件的只读属性都设置为false
所有这些都是简单的常识。我已确认
已启用=true
。我已经确认
EditMode
EditOnKeystrokeOrF2
我已经确认所有列(除了一列)都是
ReadOnly=false

我觉得有趣的是第一行:-

基础数据源支持编辑

现在,我要做的是将数据绑定到DGV:-

// Grab all the Foos.
var foos = (from x in MyRepository.Find()
            select new
                      {
                          x.Foo1,
                          x.Foo2,
                          ...
                          x.FooN
                       }).ToList();

// Now lets bind this result to the GridView.
dataGridView2.DataSource = foos;
我认为这是做事情的正确方式

我计划做的是,当单元格被更改,用户离开单元格时,我计划获取刚刚更改的数据(手动计算),然后手动更新数据库


这是正确的方法吗?

在这种情况下,基础数据源不支持编辑,因为匿名类型的属性是只读的。根据C语言规范:

匿名类型的成员是从用于创建该类型实例的匿名对象初始值设定项推断出的只读属性序列


相反,您可能希望为要显示的值定义一个具有可编辑属性的显示类,并创建该类的实例。

我在未绑定DGV时遇到了这个问题。我通过设置每行的
ReadOnly
属性来修复它。DGV和列都不是
只读的
,但行可能在我使用集合设置它们时被设置为R/O

因此:


不确定。。考虑到我将结果投射到一个匿名对象中。(注意,
selectnew{..}
foreach (var r in Lst)
{
   ...
   dgv.Rows[dgv.Rows.Count - 1].ReadOnly = false;
}