ScriptManager.RegisterClientScript位于异步面板内的FormView内的UserControl中

时间:2008-09-24 13:55:34

标签: c# .net ajax formview scriptmanager

我在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>

有谁知道我在这里可能缺少什么?

3 个答案:

答案 0 :(得分:1)

您是否尝试过使用RegisterClientSideScript?您始终可以使用IsClientSideScriptRegistered检查脚本的密钥,以确保您不会多次注册它。

我假设异步面板正在执行部分页面过去,这不会触发mechansim重新生成启动脚本。也许对ASP.Net页面生命周期和CLR有更好了解的人可以填补这些空白。

答案 1 :(得分:1)

对我来说这很好。 resizeChartMid()是函数名称。

ScriptManager.RegisterStartupScript(this, typeof(string), "getchart48", "resizeChartMid();", true);

答案 2 :(得分:0)

试试这个,我遇到了同样的问题

ScriptManager.RegisterClientScriptBlock(MyBase.Page, Me.[GetType](),
                     ("dialogJavascript" + this.ID), "alert(\"Registered\");", True)

这对我有用!

相关问题