更新datagridview表

时间:2011-07-24 11:01:19

标签: c# datagridview arraylist

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

目前我正在查看DataGridView和arraylists。

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

然后点击一个按钮,我将datagridview的数据源设置为我的arraylist,如下所示:

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

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

但我该怎么做?

我找到了解决方案:

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

但这似乎不对..

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

一种选择可能是自己将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;

如果我们假设您的某个列value属于DateTime,则可以

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

答案 2 :(得分:0)

当您使用ArrayList作为DataSource时,您正在做的是更新显示的信息的最佳方式然而有更好的收集类型使用DataSource作为支持双向数据绑定的设计。

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

当您向列表添加新对象时使用BindingList<T>代替ArrayList(使用.Add()方法),它们将自动显示在DataGridView

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

(提供高级功能的另一个DataSource选项是DataTable,就像BindingList<T>一样,当您将项目添加到DataTable时,DataGridView显示在{{1}}但是我建议使用这个列表,数据表可以将你绑定到特定的数据访问技术,或者强迫你跳过很多箍。)