【发布时间】:2012-07-12 12:10:18
【问题描述】:
我使用sqladapter 直接从datagridview 更改数据库值。
为此,我使用以下代码:
private void ok_Modify_Click(object sender, EventArgs e) {
//modify mod = new modify();
//modify_gv.DataSource = mod.TabletoMod(tickerBox.Text, FundBox.Text);
connetionString = Properties.Settings.Default.TraFra;
connection = new SqlConnection(connetionString);
Sql = "select * from Approval where Ticker ='" + tickerBox.Text + "'";
try {
connection.Open();
adapter = new SqlDataAdapter(Sql, connection);
adapter.Fill(ds);
connection.Close();
modify_gv.DataSource = ds.Tables[0];
} catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
}
private void modify_gv_CellValueChanged(object sender, DataGridViewCellEventArgs e) {
try {
cmdBuilder = new SqlCommandBuilder(adapter);
changes = ds.GetChanges();
if(changes != null)
adapter.Update(changes);
// MessageBox.Show("Changes Done");
} catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
}
但是,每次我对datagridview 进行更改时,变量“changes”始终为空。你知道为什么吗?
【问题讨论】:
-
你在哪里打电话给
AcceptChanges?这将清除对数据集的更改跟踪。 -
我试过 cmdBuilder = new SqlCommandBuilder(adapter); ds.AcceptChanges();更改 = ds.Tables[0].GetChanges();但更改仍然为空
-
不,我的意思是 不要 调用
AcceptChanges是否会导致GetChanges什么也不返回。 -
好吧明白了,不,我不叫{AccepChanges}
-
加载数据集后也不会立即发生变化。
标签: c# sql datagridview