异步面板内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)

这对我有用!