【问题标题】:DataGridView - what does AllowUserToAddRows do?DataGridView - AllowUserToAddRows 做什么?
【发布时间】:2009-09-14 14:43:15
【问题描述】:

我希望此设置会影响控件本身,但我似乎无法仅通过将 AllowUserToAddRows 设置为 true 的 DataGridView 添加新行。我只是在使用鼠标和键盘时很垃圾,还是我完全误解了这个属性?我怀疑是后者,尽管我在文档中找不到太多可以为我指明正确方向的方法。

编辑:顺便说一句,我不是垃圾,这似乎与使用列表作为 DataGridView 的数据源有关;如果我绑定到列表,小“*”就不会出现。

【问题讨论】:

    标签: c# datagridview


    【解决方案1】:

    我通过将 STMTTRN 从 List 更改为 BindingList 解决了这个问题 - List 在用作 DataSource 时似乎有一些非常奇怪的行为(请参阅我最近的另一个问题,以相同的方式解决)。

    它在生成的代码中,但我已经将它从一个数组更改为一个列表,所以 BindingList 几乎没有任何额外的麻烦 :)

    【讨论】:

    • "STMTTRN" - 听起来你在使用 OFX?
    【解决方案2】:

    我也遇到了同样的问题,BindingList 没有解决它,但 merlin 的回答给了我一个最终解决方案的提示。

    将列表包装在 BindingSource 中是解决方案的重要组成部分(也记录在另一个问题中:Can't Allow User To Add Rows to DataGridView with List<> Datasource)。

    对我来说,缺少的步骤是我列表中的对象的类没有公共无参数构造函数。添加无参数构造函数使AllowUserToAddRows 能够按预期运行。

    我从尝试 merlin 的回答时引发的异常中得到线索,其中的消息表明也可以通过处理 AddingNew 事件来启用行添加:

    无法在“MyType”类型上调用 AddNew。该类型没有 公共默认构造函数。您可以在“MyType”类型上调用 AddNew 如果您处理了AddingNew 事件并创建了适当的对象。

    我没有尝试这个,幸运的是添加公共无参数构造函数对我来说没有问题,但对于其他无法添加无参数构造函数的人来说,这是一个希望的信息。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。

      使用 BindingSource 作为 DGV 数据源并设置 BindingSource 属性 AllowNew = True,解决了我的问题。

      Dim binding As New BindingSource
      binding.DataSource = myList
      binding.AllowNew = True
      With DataGridView1
          .AutoGenerateColumns = False
          .DataSource = binding
      End With
      

      【讨论】:

        【解决方案4】:

        试试看,

        DataTable dt = new DataTable();
        dt.Columns.Add("No", typeof(int));
        dt.Columns.Add("Name");
        dataGridView1.AllowUserToAddRows = true;
        dataGridView1.EditMode = DataGridViewEditMode.EditOnKeystroke;
        dataGridView1.DataSource = dt;
        

        编辑:

        看看IBindingList

        【讨论】:

        • 我试过你的代码,它工作了,所以谢谢 :) 但我实际上使用一个列表作为数据源,这(因为它是唯一的区别)可能是我的问题的原因。您知道为什么 List 会使“添加行”功能不起作用吗?
        • 实现 IBindingList 接口。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-29
        • 1970-01-01
        • 1970-01-01
        • 2016-11-20
        • 1970-01-01
        相关资源
        最近更新 更多