将DataGridView绑定到List <T>不显示数据

这是我有的代码(它是一个非常简单的例子):

public partial class Form1 : Form
{
    List<Person> listPersons;
    public Form1()
    {
        InitializeComponent();
        listPersons = new List<Person>();
        dataGridView1.DataSource = listPersons;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text.Length > 0)
        {
            Person p = new Person();
            p.Name = textBox1.Text;
            listPersons.Add(p);
        }
    }
}

class Person
{
    public string Name { get; set; }
}

当你按下按钮时,数据被添加到列表中,但它不会显示在DataGridView 。 我错过了什么?

我曾尝试将AutoGenerateColumnsVirtualMode设置为true ,但这也未能解决问题。


已经有一段时间了,自从尝试将List <T>绑定到DataGridViews的WinForms代码之后,我已经切换了作业。 如果我没有记错,无论你绑定什么,都需要实现IBindingList,哪个List <T>不需要。 我可能是错的。

无论如何,我使用的是BindingListView,它非常快速和容易。 你只需要:

List<Customer> customers = GetCustomers();
BindingListView<Customer> view = new BindingListView<Customer>(customers);
dataGridView1.DataSource = view; 

你完成了。 我几年没有看过源代码,但我相信它会用实现IBindingList的类来包装List <T>。


但如果我只使用BindingList<T>而不是List<T>它确实有效。

示例代码:

    BindingList<Person> bl;
    public Form1()
    {
        InitializeComponent();
        bl = new BindingList<Person>();
        dataGridView1.DataSource = bl;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text.Length > 0)
        {
            Person p = new Person();
            p.Name = textBox1.Text;
            bl.Add(p);
            textBox1.Text = "";
            textBox1.Focus();
        }
    }    

但我仍然想知道如何在使用List与其DataGridView后在DataGridView显示数据。


集中您的FillGrid功能并在您想更新网格时调用它

public Form1()
{
    InitializeComponent();
     listPersons = new List<Person>();

    FillGrid();
}

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text.Length > 0)
    {
        Person p = new Person();
        p.Name = textBox1.Text;
        listPersons.Add(p);

        FillGrid();
    }
}

private void FillGrid()
{
   dataGridView1.DataSource = listPersons;
}
链接地址: http://www.djcxy.com/p/67967.html

上一篇: Binded DataGridView to List<T> not showing data

下一篇: Changing data in a dataframe with hierarchical indexing