无法允许用户使用List<>将行添加到DataGridView数据源

时间:2009-10-14 12:12:47

标签: c# .net list datagridview datasource

DataGridViewList<myClass>绑定DataSource。 但是当我将“AllowUserToAddRows”属性设置为“True”时,没有任何内容出现。

我尝试将DataSource更改为BindingList<myClass>并且进展顺利。

我想知道是否应该将List<>替换为BindingList<>,或者有更好的解决方案。

1 个答案:

答案 0 :(得分:21)

myClass是否有公共无参数构造函数?如果没有,您可以从BindingList<T>派生并覆盖AddNewCore来调用您的自定义构造函数。

(编辑)或者 - 只需将您的列表包装在BindingSource中,它可能有效:

using System;
using System.Windows.Forms;
using System.Collections.Generic;
public class Person {
    public string Name { get; set; }

    [STAThread]
    static void Main() {
        var people = new List<Person> { new Person { Name = "Fred" } };
        BindingSource bs = new BindingSource();
        bs.DataSource = people;

        Application.Run(new Form { Controls = { new DataGridView {
            Dock = DockStyle.Fill, DataSource = bs } } });
    }
}