私は、DataSourceにオブジェクトのリストを設定したDataGridViewを持っています。 (私はVS 2005でVBを使用しています。)DataGridViewを作成するには、AssetIdentifier型のデータソースを作成し、そのデータソースをフォームにドラッグします。バインドされた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のデータソースをリセットし、すべてがうまくいきました。
これを他の状況に適用した場合、リストに少なくとも1つの要素があるとは限りませんでしたが、リストに少なくとも1つの要素がある限り正常に動作しますが、リスト空になった場合、DataGridViewはSystem.IndexOutOfRangeExceptionを何度も投げました。ゼロ以外の数の要素からゼロまで移動した場合、DataGridViewの行は消えません。
すべての要素を削除し、1つの「ダミー」要素を追加してから、リストをコントロールに再バインドし、それでも機能しなかった回避策を試しました。
また、これらの例外を除いて、私はDataGridViewのセルを覆っていたときに同様の例外が発生します。
私はこの動作を数時間追跡してきました。どんな洞察?ありがとう!
必要に応じてさらに情報を追加してください。
更新: AssetIdentifierのメンバーの一部は「Nothing」でしたが、コンストラクタでこれを修正しましたが、例外は引き続き発生します。
は、私は変更を追跡することができるかどうか、私が表示されます –
...私は同じ問題を持っているので、あなたはそれを修正する方法を知って素晴らしいことです。 – John