我创建了一个表单,允许用户从DataGridView中选择一行,然后对其进行更改,并让他们使用新数据更新行。
以下是按下保存按钮时执行的代码
matchBookingID = Convert.ToInt32(DGV.SelectedRows[0].Cells[0].Value);
drMatchData = dsCIF.Tables["MatchStats"].Rows.Find(matchBookingID);
drMatchData.BeginEdit();
drMatchData["PitchID"] = comboBox2.SelectedValue;
drMatchData["RefereeID"] = comboBox1.SelectedValue;
drMatchData["SessionTime"] = txtTime1.Text + ":" + txtTime2.Text;
drMatchData["SessionDate"] = DTP.Value.ToShortDateString();
drMatchData.EndEdit();
dsCIF.Tables["MatchStats"].Clear();
daMatchStats.Fill(dsCIF, "MatchStats");
DGV.Update();
当我运行调试器时,我似乎无法找到任何错误,因为所有字段都已正确计算,并且BeginEdit()和EndEdit()也在执行。适当命名为DGV的DatagridView没有更新,我检查了Sql-server代码,该字段也没有更新。 我已经将这种方法与其他表格上的其他表格一起使用,并且它们工作正常(我知道注入攻击)我有什么问题吗?提前致谢
答案 0 :(得分:0)
编辑完成后,我忘了更新数据适配器。我添加了这行代码。
daMatchStats.Update(dsCIF, "MatchStats");
我也删除了
dsCIF.Tables["MatchStats"].Clear();
daMatchStats.Fill(dsCIF, "MatchStats");
现在我的代码看起来像这样
matchBookingID = Convert.ToInt32(DGV.SelectedRows[0].Cells[0].Value);
drMatchData = dsCIF.Tables["MatchStats"].Rows.Find(matchBookingID);
drMatchData.BeginEdit();
drMatchData["PitchID"] = comboBox2.SelectedValue;
drMatchData["RefereeID"] = comboBox1.SelectedValue;
drMatchData["SessionTime"] = txtTime1.Text + ":" + txtTime2.Text;
drMatchData["SessionDate"] = DTP.Value.ToShortDateString();
drMatchData.EndEdit();
daMatchStats.Update(dsCIF, "MatchStats");
DGV.Update();