使用sqldataadpter更新datagridview,未能更新最后一次修改

jmg 2011-10-11 09:38:14
初次使用,请大家指教!
我是直接对datagridview的cell赋值,用关联的datatable的savexml可以在文件反应所做的修改,但用sqldataadpter的update时,不能更新最后一次修改,必须在datagridview换一行才可以更新,也调用过EndEdit,还是无效。请问大家应该如何操作。
...全文
170 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
jmg 2011-10-14
  • 打赏
  • 举报
回复
这个应该有好办法处理呀,望知者言教,拜托呀,先谢了!
jmg 2011-10-13
  • 打赏
  • 举报
回复
请大家指教小弟呀,太晕了
jmg 2011-10-13
  • 打赏
  • 举报
回复
这样处理?
我是程序中自动给datagridview的cell赋值的,如果我同时更改多行,调用update时,也只有当前行未被处理,只要鼠标更换当前单元格(可以在同行)或在程序中移动当前单元格(需要在不同行),不是更新时间的问题,造成问题产生就是我没有通过datagridview输入值,而是代码赋值,这样似乎如果修改当前行的某个单元值,不移动当前单元格,该行的RowState未变成Modified照成的。
请问怎么会这样呢?
山东蓝鸟贵薪 2011-10-13
  • 打赏
  • 举报
回复
你应该在更新最后一条记录也及时更新到数据库中即可
jmg 2011-10-13
  • 打赏
  • 举报
回复
问题如此解决:
还是通过修改CurrenCell来解决的,我开始用的只左右移一下,没有效果,现在我下上移一下就可以保存了,可是怎么用鼠标点击同行就可以呢?另我我下上移一下,如果用户只是拖动滚动条看到而没有用鼠标点击Cell,我一切换CurrenCell,datagridview画面就移动,显示当前单元格了,有办法解决吗
我还是觉得这样做,有些不妥,因为datagridview的allowuseradd是false,只有一行的话,我还要true一次再切换行,然后再false,而且很别扭。
有好的解决方法吗,请大家指教。
jmg 2011-10-12
  • 打赏
  • 举报
回复
我想应该是这个问题,可是我怎么确定是哪个DataRow呢?
sdl2005lyx 2011-10-12
  • 打赏
  • 举报
回复
你遍历tb.Rows,查看每个行的DataRow.RowState 行状态,如果发现有Added、Modified的,说明AcceptChanges 尚未调用。
那么,你调用:DataRow.AcceptChanges 方法
jmg 2011-10-12
  • 打赏
  • 举报
回复
肯定是我writexml就是看更新的,结果正常呀
sdl2005lyx 2011-10-12
  • 打赏
  • 举报
回复
你不是说:“查看关连的datatable确实值已更改了”,这会怎么有没更新,到底怎么回事?
你看看:DataTable tb=(DataTable )dataGridView1.DataSource;
tb的值到底是不是最新的?
jmg 2011-10-12
  • 打赏
  • 举报
回复
还是不行,更新为0行。
sdl2005lyx 2011-10-12
  • 打赏
  • 举报
回复
那你换成这样:

保存:
DataTable tb=(DataTable )dataGridView1.DataSource;
tb.WriteXml("d:/dd.xml",false);
textBox1.Text = myDataAdapter.UpdateCommand.CommandText;
int i = myDataAdapter.Update(tb));
textBox2.Text = i.ToString();
jmg 2011-10-12
  • 打赏
  • 举报
回复
绑定
dataGridView1.DataSource=dtRWB;
赋值
dataGridView1.CurrentRow.Cells["Ignore"].Value = true;
保存
dtRWB.WriteXml("d:/dd.xml",false);
textBox1.Text = myDataAdapter.UpdateCommand.CommandText;
int i = myDataAdapter.Update(dtRWB));
textBox2.Text = i.ToString();
sdl2005lyx 2011-10-12
  • 打赏
  • 举报
回复
你把这部分代码贴出来看看。。。
jmg 2011-10-12
  • 打赏
  • 举报
回复
我是选中datagridview的某行,点按钮然后对某些单元格修改值,最后点按钮保存的。
如何对datatable直接操作?确定对应的当前行?
我描述的可能不正确,update应该是不能更新当前行的值,除我用鼠标将当前单元格移动,如果代码更换似乎了无效,唉,实在是不会用,希望有人教我,谢谢!
jmg 2011-10-12
  • 打赏
  • 举报
回复
使用dtRWB.AcceptChanges无效
sdl2005lyx 2011-10-11
  • 打赏
  • 举报
回复
也试试这个:
dataGridView1.RefreshEdit();
sdl2005lyx 2011-10-11
  • 打赏
  • 举报
回复
试试这个:
dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
jmg 2011-10-11
  • 打赏
  • 举报
回复
请大家多指教
sdl2005lyx 2011-10-11
  • 打赏
  • 举报
回复
那里直接用关连的datatable,不是更直接吗?
jmg 2011-10-11
  • 打赏
  • 举报
回复
我是通过点击按键来对datagridview赋值的,而不是在当前cell编辑的
refresh和endedit,commintedit,都没效果。
我是点按钮开始保存的,所以datagridview的焦点应该已失去了
唉,查看关连的datatable确实值已更改了,怎么会这样呢,不知道犯了什么低级错误,
有没有人遇到同样的问题呀。
加载更多回复(3)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧