DataRows不使用新数据进行更新

时间:2018-04-10 14:00:20

标签: c# sql-server

我创建了一个表单,允许用户从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代码,该字段也没有更新。 我已经将这种方法与其他表格上的其他表格一起使用,并且它们工作正常(我知道注入攻击)我有什么问题吗?提前致谢

1 个答案:

答案 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();