我有一个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”,但我在构造函数中修复了这个问题,并且异常仍然发生。
将是伟大的知道你是怎么固定它,因为我已经得到了同样的问题... – 2010-01-26 14:46:10