如何在UpdatePanel中使用SqlDataSource.Update()实现无页面刷新更新
解决UpdatePanel中调用SqlDataSource.Update()导致整页刷新的问题
兄弟,你代码里的问题其实一眼就能看出来——就是后台my_Click方法里的那行Response.Redirect(Request.Url.AbsoluteUri);在搞事情!重定向操作会强制触发整页刷新,直接绕过了UpdatePanel的局部刷新机制,难怪你每次操作都会刷新整个页面。
下面给你两步就能搞定的解决方案:
1. 移除导致整页刷新的重定向代码
直接删掉那行Response.Redirect,我们完全不需要用重定向来刷新内容,UpdatePanel本身就能搞定局部更新。
2. 手动触发UpdatePanel局部刷新
因为你的UpdatePanel设置了UpdateMode="Conditional",这种模式下不会自动刷新内容,所以在执行完数据库更新后,需要手动调用UpdatePanel的Update()方法来触发局部内容更新,确保DetailsView能显示最新的数据库数据。
修改后的后台代码如下:
protected void my_Click(object sender, EventArgs e) { SqlDataSource1.UpdateParameters["OwnerName"].DefaultValue = "My Name"; SqlDataSource1.Update(); // 手动触发UpdatePanel局部刷新,替代重定向 UpdatePanel1.Update(); }
另外,还可以优化一下前端的jQuery点击事件,防止可能的默认行为干扰:
$('#myId').on('click', function (clickEvent) { clickEvent.preventDefault(); // 阻止div点击可能触发的默认行为 document.getElementById("myBtn").click(); });
这样修改后,点击div触发按钮事件、执行数据库更新后,只会刷新UpdatePanel内部的内容,整个页面不会再重新加载了。
内容的提问来源于stack exchange,提问作者m0lochwalker
相关产品推荐
相关产品推荐

