2009-05-06 36 views
5

Tôi đang tạo một ứng dụng windows trong C#,DataBindingComplete được gọi nhiều lần

Tôi có 1 Datagridview và sau khi tôi đặt DataSource, nó sẽ có 3 Hàng.

Tôi có kèm theo 2 tổ chức sự kiện Habdlers đến Datagrdview

void dgvProductList_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)<br> 
{ 
    //this gets called 4 times 
} 

private void dgvProductList_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{    
      //gets called 2 times. 
} 

Tại sao điều này xảy ra và làm thế nào tôi có thể sửa chữa nó?

Cảm ơn trước ...

+0

Tôi gặp vấn đề tương tự. Và tôi hoàn toàn tích cực, tôi chỉ định thuộc tính DataSource một lần. Tất cả 4 sự kiện cháy cùng một lúc, mặc dù dữ liệu tôi vượt qua là rất lớn (trên 10k hàng). Có một lần đọc duy nhất vào bộ đệm DataTable, hơn là một phép gán đơn. Vẫn còn 4 "DataBindingComplete" bị sa thải. – Harry

+0

Để giải quyết vấn đề, hãy xem nhận xét của tôi [ở đây] (http://stackoverflow.com/questions/24329964/alternative-to-datagridview-databindingcomplete-event) – nam

Trả lời

0

Tôi tin rằng điều đó phụ thuộc vào các phương pháp khác của bạn, nơi bạn đang thực sự đặt DataSource. Dường như với tôi như bạn hoặc là thiết lập DataSource hai lần hoặc gọi DataBind hai lần, và trên mỗi DataBind bạn đang thực sự nhận được hai hàng vào DataGridView, do đó tổng số 4.

Một số mã bổ sung có thể giúp ...

Một số điều cần thử: tìm kiếm DataBind(), DataSource(), vv trong mã của bạn và chắc chắn rằng nó chỉ được gọi là ở các vị trí thích hợp.

Ngoài ra, nó không nhất thiết là xấu cho DataBind được gọi hai lần, giả sử một cái gì đó thay đổi giữa các databinds ... một số thay đổi của nhà nước ... thực sự khó nói mà không có nền.

6

From msdn online DataBindingComplete Event

Sự kiện này được nâng lên khi nội dung của sự thay đổi nguồn dữ liệu hoặc khi giá trị của DataSource, DataMember, hoặc BindingContext thay đổi tài sản.

Ví dụ: Nếu bạn đang chỉ định Nguồn dữ liệu, sau đó thêm 3 hàng -> 4 lần sự kiện được kích hoạt

Các vấn đề liên quan