我通过Designer创建了一个数据集,我能够很好地检索数据。在对其他数据进行一些更新后,我需要更改原始行中的状态。我已经搜索了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表定义了一个Update语句。
我哪里出错了?或者,我错过了哪一步?
答案 0 :(得分:0)
您需要删除此行
drAFE.AcceptChanges();
AcceptChanges()方法将DataRow的状态“更改”为Unchanged,因此当您调用Update时,没有要保存的行。
当您在DataSet上调用AcceptChanges时,任何DataRow对象仍然存在 在编辑模式下,他们的编辑成功完成。的RowState属性 每个DataRow也会发生变化;添加和修改的行变为不变, 并删除已删除的行