我将GRIDVIEW邦定到SQLDATASOURCE,启用编辑功能. 没登录时可以成功地更新数据. 但是一旦登录后发现更新无效. 用TRACE跟踪,发现GRIDVIEW内的内容在处理POSTBACK事件之前(LOAD内)就从数据库刷新了数据. 正常情况下回调时是不会在LOAD内刷新数据的. 正常情况下只会在ONPRERENDER内刷新. 请问这是怎么一回事?请高手指点.
posted on 2006-08-08 23:41 李红亮 阅读(797) 评论(8) 编辑 收藏
已经解决了.发现是在母版的PAGE_LOAD方法内,如果登录了就会执行一个DATABIND方法,使数据刷新了,导致无法更新,数据被还原了. 回复 引用 查看
还是没看明白 那你是怎么实现登陆的,用membership? 回复 引用 查看
我还是在用1.1的呢?唉。看来真的应该要学学2.0的了,不然会跟不上了 回复 引用 查看
this.UserNameLabel.Visible = false; if (HttpContext.Current.User.Identity.IsAuthenticated) { command = new SqlCommand("select * from [User] where UserID='"+HttpContext.Current.User.Identity.Name+"'", connection); connection.Open(); drUser = command.ExecuteReader(CommandBehavior.CloseConnection); if (drUser.Read()) { this.LoginView1.DataBind(); } this.UserNameLabel.Visible = true; this.UserNameLabel.Text = drUser["Name"].ToString(); } 回复 引用 查看
this.UserNameLabel.Visible = false; if (HttpContext.Current.User.Identity.IsAuthenticated) { command = new SqlCommand("select * from [User] where UserID='"+HttpContext.Current.User.Identity.Name+"'", connection); connection.Open(); drUser = command.ExecuteReader(CommandBehavior.CloseConnection); if (drUser.Read()) { DataBind(); } this.UserNameLabel.Visible = true; this.UserNameLabel.Text = drUser["Name"].ToString(); } 回复 引用 查看
上面的代码都是母版PAGE_LOAD内的,前一个是改正后的,后一个是改正前的.我是用MEMBERSHIP登录的,不过是自定义的MEMBERSHIPPROVIDER.因为成功登录后我想在DATAVIEW内显示有关用户的资料,所以要调用数据邦定.不小心调用了页面PAGE内的DATABIND,导致整个页面数据刷新,包括GRIDVIEW内的数据.所以数据更新就没用了.改成LOGINVIEW1.DATABIND后只会刷新LOGINVIEW内的内容. 回复 引用 查看
在页面出错时一定要记得还有个母版.之前我一直没在母版内找错误,还怀疑是不是MS的BUG.但在我无意中去看了一下母版时,问题一下子就明白了.呵呵 回复 引用 查看
帮助很大,问题解决了!谢谢~ 回复 引用