2010-10-18 49 views
0

我有一個對象的列表,設置爲BindingSource的DataSource,設置爲DataGridView的DataSource。然後我添加了一個DataGridViewButtonColumn,我想要點擊從集合中刪除該記錄。所以我只是從DataGridView CellClick事件中調用collection.RemoveAt(e.rowIndex)。但是,這會產生IndexOutOfRange異常; 「1沒有價值」..從DataGridView刪除綁定項目

這裏發生了什麼?我也許有一個模糊的想法,但想明確哪些事件是失敗等。我需要做什麼才能正確執行此操作?

編輯: 這似乎不是,如果我使用的BindingList發生。但使用列表時,我得到這個問題..

回答

1

你看到的錯誤的原因是因爲你最終綁定到ListList不包括您的DataGridView需要接收的更改通知,以反映您所做的更改。

如果您確實想要解決此問題,您可以執行以下操作:在對List進行更改之前,將BindingSource的DataSource屬性設置爲Nothing。完成更改後,請將List重置爲DataSource。

這是一個非常難看的解決方案,你可以想象。您要執行的操作綁定到實現IBindingList的對象,可以是您創建的自定義集合或BindingList

這裏是一個合理的起點爲進一步研究這個:
DataGridView Control Overview (Windows Forms)

+0

我看到..謝謝! :) – bretddog 2010-10-20 10:38:34