2009-09-22 60 views
1

我有一個不錯的litte DataGridView,它被一個按鈕和一個SQLDataAdapter和相應的saveButton加載/填充。DataGrid使用SQLDataAdapter更新問題

private void loadButton_Click(object sender, EventArgs e) 
{ 

    String connString = conStringComboBox.Text; 
    String query = queryStringComboBox.Text; 

    dAdapter = new SqlDataAdapter(query, connString); 
    SqlCommandBuilder cBuilder = new SqlCommandBuilder(dAdapter); 

    dTable = new DataTable(); 

    dAdapter.Fill(dTable); 

    bSource = new BindingSource(); 

    bSource.DataSource = dTable; 

    dataGridView.DataSource = bSource; 

} 


private void saveButton_Click(object sender, EventArgs e) 
{ 
    dAdapter.Update(dTable); 
} 

每當我在dataGridView中編輯某些東西並單擊保存時,所有內容都只是非常好用。 SQL-Server上正確單元格中的值得到更新。

但我實現了一個小編輯器,以獲得更好的概述。小區X的值有變化,這回來到DataGridView:

dataGridView.SelectedCells[0].Value = exampleString; 

的DataGridView相應更新,我點擊保存 - 更新得到順利執行,但新價值顯然不承諾到SQL Server ,因爲只要我載入同一個表格,它就會再次顯示舊值。

任何想法,我在這裏忘了什麼?每一個輸入值得讚賞!

回答

2
dataGridView.EndEdit(); 
bSource.EndEdit(); 
dAdapter.Update(dTable); 

作品!

長時間的尋找後,我終於發現了線索:

榮譽 - >.NET WinForms End Current Edit

0

既然你綁定到數據表,行有RowState的(原始的,修改)。當在網格中使用內建編輯功能時,這會將行狀態設置爲修改狀態,也許使用您的方法以編程方式更新單元格不會將基礎資源數據行屬性設置爲修改,或者甚至不會更改其值。

+0

我沒有正確退出editState,所以你在那裏的錢,thx的輸入。 – Hoax 2009-09-22 14:59:56