2014-09-22 68 views
0

我正在編寫代碼,最終使用數據綁定將數據從遠程數據庫拖入DataGridView。我目前正在創建代碼來處理CSV文件和BindingList作爲測試。BindingList ListChanged事件不會觸發,直到填充數據?

我想要在我的表單上顯示上次更新數據庫的時間。我目前在我的BindingList上使用ListChanged事件來更新「最後一次數據庫更新」顯示。

ListChanged事件似乎只在數據庫初始填充後掛鉤時觸發。下面是我的一些類代碼擴展的DataGridView:

BindingList<CsvTest> Data = new BindingList<CsvTest>; 

public void InitGrid() 
{ 
    // Data.ListChanged += Data_ListChanged; // Event never fires if this is here! 
    Data = CsvTest.ParseCsv("test.csv"); 
    Data.ListChanged += Data_ListChanged;  // Working when it's here! 
    this.DataSource = Data; // DataGridView DataSource 
} 

我想爲我的延遲更新最初被填充的列表。任何人都可以想到爲什麼這不起作用的任何原因?

非常感謝。

+2

是'ParseCsv'返回一個新的'BindingList' ?,如果是這樣,最有可能的原因,嘗試清除綁定列表並添加項目,事件將很有可能在這種情況下工作。 – 2014-09-22 05:04:01

+1

這就是問題...業餘時間!發佈回覆,我會將其標記爲最佳答案。 – janderson 2014-09-22 05:16:30

回答

1

Data = CsvTest.ParseCsv("test.csv"); 

將覆蓋你的內容Data變量。任何之前設置的值(例如Data.ListChanged)都將屬於舊的BindingList對象。並且在設置它之前,新的BindingList對象不具有該值。

如果您想在ParseCsv之前設置該值,則必須清除BindingList中的Data,然後添加ParseCsv中的所有項目。

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – 2015-10-15 11:16:00

+0

如果您閱讀了評論,它實際上會回答這個問題。我做出回答而不是評論,因此@janderson可以將其標記爲已回答 – 2015-10-15 12:32:30

+0

@TobiasLiefke OP已經留下了一條評論,建議sa_ddam213將其作爲一年多前的答案發布。這不會發生。如果他們真的回答了這個問題,就沒有政策反對張貼其他人的評論作爲答案。評論區域不是答案應該發佈的地方,答案區域是,並且Phoenix_uy通過嘗試將答案移動到適當的位置來解決問題是正確的。充其量,你可以說如果這個答案被標記爲Community Wiki,它會很好,但即便如此,也不需要這樣做。 – hvd 2015-10-16 10:45:32