【问题标题】:Refresh datagridview in windows form application在 windows 窗体应用程序中刷新 datagridview
【发布时间】:2011-03-31 21:39:40
【问题描述】:

我有一个带有 datagridview 的表单和一个这样的列表:

private void Form1_Load(object sender, EventArgs e)
        {
            List<Person> list = new List<Person>();
            list.Add(new Person("A", "An Giang"));
            list.Add(new Person("B", "TP HCM"));
            list.Add(new Person("C", "Tiền Giang"));
            list.Add(new Person("D", "Cần Thơ"));

            this.dataGridView1.DataSource = list;

            list.Add(new Person("E", "Bạc Liêu")); // --> changed

            this.dataGridView1.EndEdit();
            this.dataGridView1.Refresh();
            this.Refresh();
            this.dataGridView1.Parent.Refresh();
        }

我的问题是 datagridview 没有显示新行,尽管它的数据源已经改变。我尝试刷新数据网格,但没有成功。

【问题讨论】:

    标签: datagridview refresh


    【解决方案1】:

    查看BindingList&lt;T&gt;,这是一个支持数据绑定的列表,因此它会在修改集合时触发事件。

    【讨论】:

    • 你们都比我快。非常感谢你。 ^^
    【解决方案2】:

    快速 hack 表明这将按照您的预期重新绑定 List&lt;t&gt;

    ...
    list.Add(new Person("E", "Bạc Liêu")); // --> changed
    
    dataGridView1.DataSource = null;
    dataGridView1.DataSource = list;
    

    考虑使用BindingList&lt;Person&gt; 而不是List&lt;Person&gt; 进行重构,这将按预期执行,并且您不需要刷新任何代码。实现这个改动,插入Person E之后的代码就可以全部删除了。

    【讨论】:

    • 我试过 dataGridView1.DataSource = null; dataGridView1.DataSource = 列表;但它会闪烁 datagridview。
    【解决方案3】:

    使用它对我有用:

    qTableAdapter.Fill(_11DataSet.q);

    【讨论】:

      【解决方案4】:

      回答我的问题。我尝试使用BindingList&lt;Person&gt; 而不是List&lt;Person&gt;,问题就解决了。

      【讨论】:

        猜你喜欢
        • 2015-04-18
        • 2016-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-31
        • 1970-01-01
        相关资源
        最近更新 更多