2009-11-15 15 views
0

[注:我已經簡化我的例子爲清楚起見]更新我的表的datagridviewcomboboxcolumns直接

比方說,我有一個SQLite數據庫有兩個表:項目及部門:

項目

id_items : INTEGER PRIMARY KEY 
name_item : VARCHAR(...) 
id_sector : INTEGER 

部門

id_sector : INTEGER PRIMARY KEY 
name_sector : VARCHAR(...) 

我目前有一個datagridview綁定到項目表。它會得到正確的提供,並且該表將該扇區顯示爲datagridviewcomboboxcolumns。

因此,在我的Winforms CustomControl,我所有的數據加載和綁定發生在負載()方法:

colSector.DataSource = m_dataContext.SectorTable; 
colSector.DisplayMember = "name_sector"; 
colSector.ValueMember = "id_sector"; 
ItemsGrid.DataSource = new DataView(m_dataContext.ItemsTable); 

我的數據視圖的組合框是公加載來自扇區中的數據表。

現在,我想我的窗體上的一個按鈕,將允許一個新部門的建立:

我創建了一個txtbox(txtNewSector)和一個按鈕,觸發創作:

private void btnAddNewSector_Click(object sender, EventArgs e) 
    { 
     // Add new sector to db 
     m_dataContext.AddNewSector(newSectorName); 

     // refresh dataview so that comboboxes are updated with the new entry 
     ??? 
    } 

如何我可以進行更新嗎?

我希望編輯提出的問題更加清楚,請大家指教....

問候

+0

難道AddNewSector不更新數據上下文寫入數據庫?通常情況下,通過綁定到DataView,如果將新記錄添加到基礎表中,則應自動更新項目網格。 –

回答

1

而不是

??? 

添加

ItemsGrid.DataSource = new DataView(m_dataContext.ItemsTable); 
0

您可以使用一個timer。它會在一定的時間間隔後完成任務。

看看示例Timer in C#

你會發現使用它的想法。

我給一些草圖

private DataTable LoadData() 
{ 
    DataTable dt = LoadDatabaseData(); 

    return dt; 
} 

private void timer1_Tick(object sender, System.EventArgs e) 
{ 

    myDataGrid.DataSource = LoadData(); 

    myDataGrid.Databind(); 

     or 

    your combo box's datasource what ever. 

} 

注意 - 您正在使用的SQLite方面我沒有任何想法,除了它是一個數據庫。我僅向您展示瞭如何調用將成爲網格數據源的函數,並且每隔1秒(我指的是您指定的時間間隔)刷新數據。

希望這會有所幫助。

+0

對不起,我被誤解了。我正在尋找將更新當前視圖的**代碼**,以便綁定到已更改的數據庫條目的組合框被更新。 – karlipoppins

+0

生成一個將從數據庫加載數據並將綁定到網格的函數。 現在每隔1分鐘就從定時器的滴答事件中調用函數。 –