我有一个WinForm应用程序与多个DataGridViews绑定到SortableBindingLists。当行被删除时刷新DataGridView绑定到列表
在某些情况下,我需要以编程方式从网格绑定列表中删除一个项目。
我似乎无法让DGV认识到它的数据已经改变,或者,特别是它有更少的行。我调用dataGridView1.Invalidate(),它正在重绘网格,但它试图重新绘制与之前一样多的行,并抛出一系列“索引不存在”的异常,每个列都有一个例外。
这里呈现该问题的简化的代码示例:(只是一个带DGV和一个按钮的WinForm)
private List<Employee> list;
private void Form1_Load(object sender, EventArgs e)
{
list = new List<Employee>();
for (int ix = 0; ix < 3; ix++)
{
list.Add(ObjectMother.GetEmployee(ix+1));
}
dataGridView1.DataSource = list;
}
private void cmdDeleteARow_Click(object sender, EventArgs e)
{
list.Remove(list[0]);
dataGridView1.Invalidate();
}
在ASP.NET中,使用一个GridView控制时,有一个“的DataBind() “你可以调用的方法强制它刷新它的数据。在WinForms中似乎没有这样的东西,或者我错过了什么?
这是超级老,但它接近谷歌的顶部,所以我会在这里抛出一些东西。切换到绑定列表100%完美。其次,如果您使用绑定源方式,如果您在原始列表上运行添加/移除,则无法看到在DataGridView上反映的更改。您需要运行绑定源上的添加/删除。 – MindingData 2012-09-20 06:19:54