异步面板内FormView内UserControl中的ScriptManager.RegisterClientScript
时间:2020-03-06 14:39:47 来源:igfitidea点击:
我在从Async面板的formview中的用户控件内部注册javascript事件时遇到了一个烦人的问题。我进入formview,然后按一个按钮以切换到插入模式。这不会进行整页的回发。在插入模式下,我的用户控件的page_load事件应使用ScriptManager.RegisterStartupScript注册一个JavaScript事件:
ScriptManager.RegisterStartupScript(base.Page, this.GetType(), ("dialogJavascript" + this.ID), "alert(\"Registered\");", true);
但是,当我查看HTML源代码时,该事件并不存在。因此,永远不会显示警报框。这是我实际的aspx文件的设置:
<igmisc:WebAsyncRefreshPanel ID="WebAsyncRefreshPanel1" runat="server"> <asp:FormView ID="FormView1" runat="server" DataSourceID="odsCurrentIncident"> <EditItemTemplate> <uc1:SearchSEDUsers ID="SearchSEDUsers1" runat="server" /> </EditItemTemplate> <ItemTemplate> Hello <asp:Button ID="Button1" runat="server" CommandName="Edit" Text="Button" /> </ItemTemplate> </asp:FormView> </igmisc:WebAsyncRefreshPanel>
有人知道我在这里可能会缺少什么吗?
解决方案
我们是否尝试过使用RegisterClientSideScript?我们始终可以使用IsClientSideScriptRegistered检查脚本的密钥,以确保不会多次注册。
我假设异步面板正在做一个向后的部分页面,这不会触发机制重新生成启动脚本。也许对ASP.Net页面生命周期和CLR有更好了解的人可以填补这些空白。
试试这个,我遇到同样的问题
ScriptManager.RegisterClientScriptBlock(MyBase.Page, Me.[GetType](), ("dialogJavascript" + this.ID), "alert(\"Registered\");", True)
这对我有用!