我已经通过设计器创建了一个数据集,并且能够很好地检索数据。在对其他数据进行一些更新后,我需要更改原始行中的状态。我已经搜索了 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 表定义了一条更新语句。
我哪里做错了?或者,我还缺少什么步骤?