2011-07-24 66 views
0

我在这个编程的东西是新的,它很有趣!更新datagridview表

此刻我正在查看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; 
    } 

,但似乎并不正确..

+0

为什么你的意思是'这看起来不正确? –

+0

似乎很奇怪,我必须删除,然后重新添加数据源 – Mathias

回答

0

一种选择是增加new rowDataGridView自己。在加入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); 
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

+0

嗯..无法找到.EndInit()方法.. – Mathias

+0

同样在这里...我将假设Xtudio意味着EndEdit并更新该帖子。 (EndEdit方法:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.endedit.aspx?ppud=4) –

0

当您使用ArrayList为您DataSource那么你在做什么是更新显示informmation的最佳途径但是但是也有一些更好的使用作为已经被设计为支持双向的DataSource集合类型数据绑定。

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

随着BindingList<T>代替ArrayList当你添加新的对象列表(使用。新增()方法),他们将自动出现在DataGridView

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

(另一DataSource选项,提供先进的功能是DataTable就像用BindingList<T>当你添加一个项目出现在DataGridView但我建议使用清单,数据表或者您绑定到特定的数据DataTable接入技术或强迫你跳过很多篮球)。