callYourDataSet.AcceptChanges();after you callDataAdapter1.Update(YourDataSet);
解决方案 »
- .NET开发文件的上传下载
- asp.net控件问题,只能在IE下面运行?我在Opera下面运行,控件不起作用
- @@@@@repeater的使用--如何自定义它的编辑时的状态
- asp 用Jmail发邮件???
- ide是什么?
- ASP.NET中下载播放Flash咋就这么慢呢?????
- 高分求助,Webpart实现IPersonalizable,自定义属性状态丢失的问题
- .net如何统计在线人数(今天,昨天)?
- 怎么判断一个字串是否为空?
- 在asp.net中怎么使用 用JavaScript 写的日历控件吗 ?
- 求一asp连sql server代码,完整的,谢谢
- 为什么我的 DataGrid 更新代码不执行?
提交在DataSet对象载入之后或上次调用AcceptChanges()方法之后对DataSet对象的所有更改
真的这么简单吗?我就是调用了AcceptChanges不行才来问的啊?我同时打开两个IE,对同一数据进行修改,结果总是最后修改的那个,它应该是有并发冲突的啊?ASP.NET是无状态的,它怎么知道原来的DataSet的情况呢?每次都要Load进新的数据,无法和以前的进行比较啊?是不是要自己写代码处理?
http://msdn.microsoft.com/msdnmag/issues/03/04/DataConcurrency/default.aspx
AcceptChanges是不应该调用的。
AcceptChanges后调用DataAdapter.Update,那么所有数据都不会执行更新到数据库中..
TO : saucer(思归) 这个我看过了,它是Win32的程序,我说的是ASP.NET程序,无状态的。ADO.NET 是不是会自动去比较原来DataSet和数据库的值?如果是ASP.NET,它拿什么去比,要自己写代码保存吗?我想不用吧?
2. B获取了数据库里的数据
3. A更新数据
4. B更新数据-->并发冲突,因为CommandBuilder建立的更新语句在WHERE里用了原来数据里的值>>>ASP.NET是无状态的,它怎么知道原来的DataSet的情况呢?把你目前正在修改的数据放在DataSet/Session变量里
看样子要自己些代码来判断了,Web上的并发(DataGrid,SqlDataAdapter)比起Win32程序(DataGrid,SqlDataAdapter)的并发不一样,Win32那个DataGrid很好用,因为SqlDataAdapter状态能保留,所以它自己能抛出并发错误。Web上的DataGrid,SqlDataAdapter就不一样了,SqlDataAdapter状态不能保存,自己写Session来保存也不行啊,要整个逻辑都自己处理了,唉,难道真的这么烦吗?
终于知道了,用Update(Session("dtValue"))是可以的。但问题来了:1.Session是会超时的。2.把Dataset的信息存放在Session中,用户多了,服务器受不了啊!3.如果用ViewState,大量数据往返于客户端和服务器,也不理想!