【问题标题】:updating datagridview table更新 datagridview 表
【发布时间】:2011-10-11 23:49:52
【问题描述】:

我是这个编程的新手,这很有趣!

目前我正在查看 DataGridView 和数组列表。

在我的数组中,我有姓名和地址等...

通过单击按钮,我将 datagridview 的数据源设置为我的数组列表,如下所示:

    private void button1_Click(object sender, EventArgs e)
    {
        dataGridView1.DataSource = logik.kundekartotek.arrKunder;
    }

但是当我向我的数组列表添加一些新信息时,我需要更新 datagridview..

但是我该怎么做呢?

我找到了解决办法:

    private void button1_Click(object sender, EventArgs e)
    {
        dataGridView1.DataSource = null; 
        dataGridView1.DataSource = logik.kundekartotek.arrKunder;
    }

但这似乎不对..

【问题讨论】:

  • 你为什么说“这看起来不对??”
  • 我必须删除然后重新添加数据源似乎很奇怪

标签: c# datagridview arraylist


【解决方案1】:

试试这个:

private void button1_Click(object sender, EventArgs e)
{
    dataGridView1.DataSource = logik.kundekartotek.arrKunder;
    dataGridView1.EndEdit();
}

private void button2_Click(object sender, EventArgs e)
{
    dataGridView1.Refresh();
}

EndEdit 被描述为here

【讨论】:

【解决方案2】:

一种选择是您自己将new row 添加到DataGridView。在将new item 添加到您拥有的array 时,您可以这样做,

  int i = dataGridView1.Rows.Add();//i is the index of the new row added

    dataGridView1.Rows[i].Cells[0].Value = val1;
    dataGridView1.Rows[i].Cells[1].Value = val2;

如果让我们假设,您的一列 valueDateTime,您可以这样做

dataGridView1.Rows[i].Cells[1].ValueType = typeof(DateTime);

【讨论】:

    【解决方案3】:

    当您使用ArrayList 作为您的DataSource 时,您所做的是更新显示信息的最佳方式然而有些集合类型更适合用作@ 987654324@ 旨在支持两种方式的数据绑定。

    首先要看的是通用的BindingList<T> 集合。它在 MSDN 上有完整的描述 here

    当您将新对象添加到列表(使用 .Add() 方法)时,使用 BindingList<T> 而不是 ArrayList,它们将自动出现在 DataGridView 中。

    一旦您开始使用它,您可能会想要更多功能,例如按列对网格进行排序 - 浏览 MSDN 以获得更多可能的示例。

    (另一个提供高级功能的DataSource选项是DataTable,就像BindingList<T>一样,当您将项目添加到DataTable时,它会出现在DataGridView中,但我建议使用列表,数据表要么将您绑定到特定的数据访问技术,要么迫使您跳过很多圈子)。

    【讨论】:

      猜你喜欢
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 2012-06-08
      • 2012-10-25
      • 2012-09-26
      • 2011-06-11
      相关资源
      最近更新 更多