代码之家  ›  专栏  ›  技术社区  ›  Pure.Krome

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

  •  4
  • Pure.Krome  · 技术社区  · 14 年前

    我正在尝试对DataGridView中的许多列启用编辑。现在,在有人提出建议之前,我应该读一下 MSDN article: How to: Specify the Edit Mode for the Windows Forms DataGridView Control ,我已经有了。

    总之(我引用):

    • 基础数据源支持编辑。
    • DataGridView控件已启用。
    • EditMode属性值不是以编程方式编辑的。
    • 单元格、行、列和控件的只读属性都设置为false。

    Enabled = 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;
    

    我认为这是做事情的正确方法。。

    我打算做的是,当手机换了,用户 树叶 在这个单元中,我计划获取刚刚更改的数据(手动计算),然后手动更新数据库。

    这是正确的做事方式吗?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Jeff Ogata    14 年前

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

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

        2
  •  2
  •   Dave Clemmer manu    12 年前

    我对未绑定的DGV有这个问题。我通过设置 ReadOnly 只读 ,但这些行可能在我使用集合设置它们时被设置为R/O。

    所以:

    foreach (var r in Lst)
    {
       ...
       dgv.Rows[dgv.Rows.Count - 1].ReadOnly = false;
    }