问题描述
我设置了一个updatepanel控件,内部的按钮触发这个控件内容的刷新,而非整个页面刷新。现在的问题是,在updatepanel中的button控件执行完成后如何跳转到页面的指定锚点。类似于<ahref="#gotohere">goto</a>这样不用刷新页面就能实现的跳转锚点我试过在button中添加Response.Write("<scriptlanguage='javascript'>location.href='#gotohere';returnfalse;</script>");因为button控件是在updatepanel中的,这个response就不能执行了,这里的response.write是刷新页面后跳转到锚点。<aname="gotohere"></a><!--点击按钮后页面到这个锚点--><asp:ScriptManagerID="ScriptManager1"runat="server"></asp:ScriptManager><asp:UpdatePanelID="UpdatePanel1"runat="server"UpdateMode="always"><ContentTemplate><asp:ButtonID="Button5"runat="server"onclick="Button5_Click"Text="提交"/></ContentTemplate></asp:UpdatePanel>
问题就是如何实现这个button功能执行完之后跳转到指定锚点
解决方案
解决方案二:
看看能不能帮你:例1:UpdatePanel外跳转Response.Write("<script>window.location='line_enter_bury.aspx';</script>");Page.ClientScript.RegisterStartupScript(Page.GetType(),"","<script>window.open('default2.aspx')</script>");Updatepanel内跳转stringscriptStr="location.replace('line_enter_bury.aspx')"ScriptManager.RegisterStartupScript(this.UpdatePanel1,this.GetType(),"click",scriptStr,true);例2:UpdatePanel外提示Response.Write("<script>alert('请选择县区名称!!!');</script>");有刷新Page.ClientScript.RegisterStartupScript(this.GetType(),"","<script>alert('提示信息')</script>");无刷新Updatepanel内提示ScriptManager.RegisterStartupScript(this.UpdatePanel1,this.GetType(),"msg1","alert('请选择中继段编号!');",true);例3:UpdatePanel外选择跳转Response.Write("<script>if(confirm('直埋光缆信息添加完毕!是否继续添加?'))location='line_enter_bury.aspx';elselocation='line_enter.aspx'</script>");Updatepanel内选择跳转ScriptManager.RegisterStartupScript(this.UpdatePanel1,this.GetType(),"click","<script>if(confirm('直埋光缆信息添加完毕!是否继续添加?'))location='页面1';elselocation='页面2'</script>",false);例4:外提示跳转ClientScript.RegisterStartupScript(this.GetType(),"","<script>alert('信息添加完毕!是否继续?');window.location='app_addshebei.aspx';</script>");关闭页面:Response.Write("<scriptlanguage="javascript">window.opener=null;window.close();</script>");刷新父窗体Response.Write("<script>window.opener.location.reload();</script>");提示并关闭窗体Response.Write("<script>alert('信息修改完毕!!!');window.opener=null;window.close();</script>");ScriptManager.RegisterStartupScript参数ScriptManager.RegisterStartupScript(this.Button1,this.GetType(),"alertScript","window.open('default2.aspx');",true);第一个参数为要注册脚本的控件ID,试了一下,只要是本页面的就行。第二个参数为注册脚本控件类型,是控件还是this.GetType()都可以,typeOf(string)也没问题.第三个脚本函数的名字,随便起。第四个是脚本内容。第五个是标明是否再添加脚本标签,如果第四个参数里包含了<script></script>标签,此处则为false,否则为true。第六个,无刷新提示,然后关闭System.Web.UI.ScriptManager.RegisterStartupScript(Me.updatepanel1,Me.[GetType](),"unReport","alert('保存成功!');window.close();",True)在WebConfig中添加<httpHandlers><removeverb="*"path="*.asmx"/><addverb="*"path="*.asmx"validate="false"type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions,Version=1.0.61025.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/><addverb="*"path="*_AppService.axd"validate="false"type="System.Web.Script.Services.ScriptHandlerFactory,System.Web.Extensions,Version=1.0.61025.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/><addverb="GET,HEAD"path="ScriptResource.axd"type="System.Web.Handlers.ScriptResourceHandler,System.Web.Extensions,Version=1.0.61025.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"validate="false"/></httpHandlers><httpModules><addname="ScriptModule"type="System.Web.Handlers.ScriptModule,System.Web.Extensions,Version=1.0.61025.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35"/></httpModules>LinkButton2.Attributes.Add("onclick","returnconfirm(""'同意计划'后不能再编辑,这样做吗?"")")
解决方案三:
pageload里加上这个就可以实现跳转锚点功能,但是这个onclick就覆盖了原来的button的onclick功能,如何让两个onclick完美接合呢?button5.Attributes.Add("onclick","location.href='a.aspx';returnfalse;");
解决方案四:
Updatepanel内跳转stringscriptStr="location.replace('line_enter_bury.aspx')"ScriptManager.RegisterStartupScript(this.UpdatePanel1,this.GetType(),"click",scriptStr,true);这个倒是可以跳转页面,但是不能实现跳转到当前页面的锚点呀
解决方案五:
引用3楼zhoutianyu846的回复:
Updatepanel内跳转stringscriptStr="location.replace('line_enter_bury.aspx')"ScriptManager.RegisterStartupScript(this.UpdatePanel1,this.GetType(),"click",scriptStr,true);这个倒是可以跳转页面,但是不能实……
我换成location.replace('#gotohere')这样的话这句语句是可以执行的,可以看到url变成了xxx.aspx#gotohere,但是奇怪的是却并没有真正跳转到这个锚点呀!如果是repalace(‘某个页面.aspx’)是可以成功执行的!我想不明白了!!!为什么#gotohere这个锚点跳转就不行了呢!!!难道锚点跳转就一定要刷新整个页面了么!!!!