日期:2014-05-20  浏览次数:20393 次

Updating时DetailsView和SqlDataSource中相应字段值不一致的问题
使用DetailsView+SqlDataSource显示、更改数据,显示没问题,但更改老改不了。后来发现:

在DetailsView的Updating事件中添加以下代码:
for   (int   i   =   0;   i   <   e.NewValues.Count;   i++)
if   (e.NewValues[i]   !=   null)
Response.Write(e.NewValues[i].ToString());
在相应的SqlDataSource的Updating事件中添加以下代码:
foreach   (System.Data.Common.DbParameter   param   in   e.Command.Parameters)
if   (param.Value   !=   null)
Response.Write(param.Value.ToString()   +   "\r\n ");
运行结果:
1.   如果字段值原先为null,现在设置了值,则两段代码打印出来的值一致,都是新的值。
2.   如果字段值原先不为null,则第一段代码打印出新值,第二段代码打印出旧值。

有谁知道这是怎么回事吗?

------解决方案--------------------
第一段代码打印出新值,第二段代码打印出旧值, 因为第2段代码是在更新前执行的.


至於你说的如果字段值原先为null,现在设置了值,则两段代码打印出来的值一致. 这个我觉得奇怪,应该是第2段不打印出null字段内容才合理~~~~~
------解决方案--------------------
我说的 "第2段代码是在更新前执行的 "是说在更新DbParameter前.