我有一個包含DataGridView,BindingSource,DataTable和SqlDataAdapter的表單。我填充網格和數據綁定如下:如何確定DataGridView是否包含綁定到SqlDataAdapter時未提交的更改
private BindingSource bindingSource = new BindingSource();
private DataTable table = new DataTable();
private SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT * FROM table ORDER BY id ASC;", ClassSql.SqlConn());
private void LoadData()
{
table.Clear();
dataGridView1.AutoGenerateColumns = false;
dataGridView1.DataSource = bindingSource;
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
dataAdapter.Fill(table);
bindingSource.DataSource = table;
}
然後,用戶可以更改該數據,並提交這些更改或通過點擊丟棄它們或者是保存或分別取消按鈕。
private void btnSave_Click(object sender, EventArgs e)
{
// save everything to the displays table
dataAdapter.Update(table);
}
private void btnCancel_Click(object sender, EventArgs e)
{
// alert user if unsaved changes, otherwise close form
}
我想補充一個對話框,如果單擊了取消該警告的未保存的更改用戶,如果存在未保存的更改。
問:
如何確定用戶是否修改DataGridView的數據,但它不能提交到數據庫?有沒有簡單的方法來比較當前的DataGridView數據與上次檢索的查詢? (請注意,不會有任何其他線程或用戶在同一時間改變在SQL數據。)
這可能會成爲問題,如果UI變得更加複雜(每個表更多的控件)。 – 2010-05-12 15:31:11