c#foreach(datarow tables[].rows)帮看一下下面的代码

privateintGetChanges(){try{intncount=0;DataSetmodifiedds=mdataset1.GetChanges();if(mo... private int GetChanges()
{
try
{
int ncount = 0;
DataSet modifiedds = mdataset1.GetChanges();
if(modifiedds==null)
{
return 0;
}
foreach (DataRow r in modifiedds.Tables["MODULE_CLASS_TABLE"].Rows)
{
if(r.RowState==DataRowState.Deleted)
{
consolewrite(r["ID",DataRowVersion.Original].ToString()+":"+r.RowState.ToString()+":");
}
if (r.RowState==DataRowState.Modified)
{
consolewrite(r["ID", DataRowVersion.Original].ToString() + ":" + r.RowState.ToString() + ":" + r["ID", DataRowVersion.Current].ToString() + "" + r["M_TITLE", DataRowVersion.Current].ToString());

}
if (r.RowState==DataRowState.Added)
{
consolewrite(r["ID",DataRowVersion.Current].ToString()+":"+r.RowState.ToString()+":"+r["M_TITLE",DataRowVersion.Current].ToString());
}
ncount++;
}
return ncount;
}
catch (Exception E)
{
errorhandler(E.ToString());
return 0;
}
}

private void btnsave_Click(object sender, System.EventArgs e)
{
try
{
if (mdataset1.HasChanges())
{
mcommand.Update(this.mdataset1);
MessageBox.Show("数据修改成功!");
consolewrite("共[" + GetChanges() + "]笔数据修改!");
mcommand.Update(this.mdataset1);
}
else
{
MessageBox.Show("无修改数据!");
}
}
catch (System.Exception E)
{
errorhandler(E.ToString());
}
}

有错,测试的时候明明修改了数据,可总是“0笔数据被修改”。
我刚入门,大家帮我看看,这是我照书上抄的例子,还不是特别清楚具体的意思。
DataRowVersion.Original].ToString()这个是什么意思
真诚的感谢大家的帮助,很想把分给大家每人都分点,希望我这个单一的选择不会让其他朋友感到失望。我不是学软件的,而且自己的基础也很差,学了段时间现在连门还没有入,每一步都难,幸亏有这么多热心人的帮助。谢谢大家!
展开
 我来答
百度网友451206a
2010-04-12 · TA获得超过1815个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:464万
展开全部
如果数据被修改过的话,
r["ID",DataRowVersion.Original].ToString() 是修改前的数据
r["ID", DataRowVersion.Current].ToString() 是修改后的数据。

你可能是在datagridview里改的数据吧。
改完数据后按下回车,离开修改的那个单元格 再点按钮应该就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
deanearth
2010-04-13
知道答主
回答量:19
采纳率:0%
帮助的人:0
展开全部
1.查看Update(this.mdataset1)是否已经使DataSet进行了AcceptChange。
2.DataRowVersion.Original是修改前的行数据。

修改为看看:
int ret = GetChanges();
mcommand.Update(this.mdataset1);
MessageBox.Show("数据修改成功!");
consolewrite("共[" + ret + "]笔数据修改!");
不过最好在mcommand.Update(this.mdataset1)中返回修改的记录条数比较正确。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友bc6b381
2010-04-12 · 超过12用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:29.5万
展开全部
调试一下,那个DataRow row = new DataRow();
row["ID",System.Data.DataRowVersion version].toString();是查看你的数据版本也就是记录修改前 修改后的,你那个mdataset1.HasChanges()能返回true吗,如果结果是0条被修改 而mdataset1.HasChanges()返回true则可能是这个mdataset1.HasChanges()方法出错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
silyt
2010-04-12 · 超过11用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:0
展开全部
modifiedds 是不是 null? r.RowState 的值对不对?最好debug调试一下看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式