0

我已经通过设计器创建了一个数据集,并且能够很好地检索数据。在对其他数据进行一些更新后,我需要更改原始行中的状态。我已经搜索了 StackOverflow 和 MSDN,我想我已经尝试了所有建议 - 没有运气。

AFEDataSetTableAdapters.AFE_allTableAdapter taAFEAll = new AFEDataSetTableAdapters.AFE_allTableAdapter();
AFEDataSet.AFE_allDataTable dtAFEAll = new AFEDataSet.AFE_allDataTable();
taAFEAll.Fill(dtAFEAll, sAFENumber);
if (dtAFEAll.Count != 1)
{
    // error condition - should only ever be one row
}
DataRow drAFE = dtAFEAll.Rows[0];

// ...如果一切顺利...

if (...successful...)
{
    drAFE.BeginEdit();
    drAFE["AFEStatus"] = "Published";
    drAFE.EndEdit();
    try
    {
        drAFE.AcceptChanges();
        int iTemp = taAFEAll.Update(dsAFE.AFE_all);
    }
    catch (Exception ex)
    {
        sMessage = ex.Message.ToString();
    }
}

我在有和没有 BeginEdit、EndEdit、AcceptChanges 的情况下都试过了;没变。调用该.Update方法时,我可以看到(在调试中)drAFE 的 ItemArray 显示了 AFEStatus 的更改值。然而,更新返回一个零,并且数据库没有改变。

我在 DataSetDesigner 后面的代码中进行了验证,并且 AFE_all 表定义了一条更新语句。

我哪里做错了?或者,我还缺少什么步骤?

4

1 回答 1

0

您需要删除此行

 drAFE.AcceptChanges();

AcceptChanges() 方法将 DataRow 的状态“更改”为未更改,因此当您调用 Update 时,没有要保存的行。

来自 MSDN

当您在 DataSet 上调用 AcceptChanges 时,任何仍处于编辑模式的 DataRow 对象都会成功结束其编辑。每个 DataRow 的 RowState 属性也会发生变化;添加和修改的行变为未更改,删除的行被删除

于 2013-04-24T19:41:56.680 回答