1

我在异步面板的表单视图中从用户控件内部注册 javascript 事件时遇到了烦人的问题。我转到我的表单视图,然后按一个按钮切换到插入模式。这不会进行整页回发。在插入模式下,我的用户控件的 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>

有谁知道我在这里可能会错过什么?

4

3 回答 3

1

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

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

于 2008-09-24T14:23:28.277 回答
1

对我来说效果很好。 resizeChartMid()是一个函数名。

ScriptManager.RegisterStartupScript(this, typeof(string), "getchart48", "resizeChartMid();", true);
于 2012-11-05T18:44:20.217 回答
0

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

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

这对我有用!

于 2009-09-27T03:51:40.207 回答