Sửa lỗi của DataGridView trong C#

“Operation is not valid due to the current state of the object.”

=> Đây là một trong những lỗi khá là khó chịu của C# khi sử dụng Visual Studio 2010.

Lỗi này xuất hiện khi DataSource Binding và DataGridView có sự chêch lệch record giữa số lượng record trong BindingList và số lượng record trong DataGridView do một lỗi của Microsoft nên số lượng record trong DataGridView it hơn 1 so với trong DataBinding.

* Muốn sửa lỗi ta cần phải thêm một handler 

     lkDataSource.AddingNew += new AddingNewEventHandler(lkDataSource_AddingNew);

* Và so sánh như sau:

(Có thể các bạn sẽ không hiểu vì sao ở đây là DataGridView count bằng với Databinding count, đơn giản vì BindingList Count lớn hơn 1 so với DataGridView count nhưng nó lại chứa thêm một record rỗng để người sử dụng nhập vào nên nó vừa trừ 1 để bằng lại vừa cộng 1 vì hơn 1 record adding nên rút cuộc phép so sánh sẽ thnàh như thế này)

void lkDataSource_AddingNew(object sender, AddingNewEventArgs e)
{
if (dgv_list.Rows.Count == lkDataSource.Count)
{
lkDataSource.RemoveAt(lkDataSource.Count – 1);
return;
}
}

Tagged: , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: