2009-06-02 28 views
0

我有一个DataGridView,我已经将对象列表设置为DataSource。 (我在使用VB的VS 2005中)。我通过创建类型为AssetIdentifier的数据源并将该数据源拖到我的表单上来创建DataGridView。当绑定的DataSource变为空时如何处理更新DataGridView?

我想要在组合框或其他DataGridView中的选择更改时更新DataGridView。 (下面我正在考虑在另一个DataGridView中点击)以下工作:

Public Class dlgShowAssets 

    ' class member variable 

    Private assetIdList As List(Of AssetIdentifier) 

    ' pertinent subs and functions 

    Private Sub RefreshAssetIdentifierDataGridView() 
     AssetIdentifierDataGridView.DataSource = assetIdList 
    End Sub 

    Private Sub AssetDataGridView_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles AssetDataGridView.CellClick  
     assetIdList = RepopulateTheList(id) 
     Me.RefreshAssetIdentifierDataGridView() 
    End Sub 

End Class 

在这种情况下,我一直都知道,assetIdList将至少有一个元素。我会更新列表,并将DataGridView的数据源重置为该列表,并且一切正常。

当我将它应用于另一种情况时,我无法保证列表至少有一个元素,只要列表中至少有一个元素,事情就会正常工作,但如果列表DataGridView抛出System.IndexOutOfRangeException多次。如果我从非零数量的元素变为零,DataGridView中的行不会消失。

我尝试了一种解决方法,即删除所有元素,添加一个“dummy”元素,然后将列表重新绑定到控件,但仍然无效。

此外,遵循所有这些例外情况,当我在DataGridView中的单元格上进行悬停时,会发生其他类似的异常。

我一直在试图追查这种行为几个小时。任何见解?谢谢!

如果需要,我们很乐意添加更多信息。

UPDATE: AssetIdentifier的一些成员是“Nothing”,但我在构造函数中修复了这个问题,并且异常仍然发生。

回答

0

重构的代码和它的作品...

+0

将是伟大的知道你是怎么固定它,因为我已经得到了同样的问题... – 2010-01-26 14:46:10

相关问题