【问题标题】:Javascript function doesn't get called - ASP.NET and UpdatePanel未调用 Javascript 函数 - ASP.NET 和 UpdatePanel
【发布时间】:2009-03-07 21:41:43
【问题描述】:

我在由页面(父 UC)加载的用户控件上具有以下结构:

<UpdatePanel>
  <UpdatePanel>
     .. In the codebehind, it loads a Child user control at runtime
  </UpdatePanel>
</UpdatePanel>

UC 有 OnPageLoad 注册一个脚本。

ScriptManager.RegisterStartupScript(this, typeof(Page), "Load_" + this.ClientID, base.GetRegisterScript(this.ClientID), true);

JS 函数永远不会在异步回发上执行。如果我删除 UpdatePanel,它会按预期工作

编辑:使用 this.GetType() 而不是 typeof(Page) 但没有运气

再次编辑:

Matt - 我尝试将 typeof(Page) 替换为 UC 名称。这是更新后的行:

ScriptManager.RegisterStartupScript(this, typeof(TemplateAreaTypeOne), "Load_" + this.ClientID, "...JS function here,,", true);

为了澄清,页面加载了具有这些更新面板的父 UC。 ParentUC 然后加载 ChildUC,ScriptManager.RegisterStartuScript 在 ChildUC 中使用

编辑

标记有:

<script type="text/javascript">
//<![CDATA[
; findControl('PageLoadedHiddenTxtBox').value ='Set';OnLoadBegin('ctl00_WorkSpaceContent_ctlUnion1_ctlUnion1Child','Edit');OnLoadEnd('ctl00_WorkSpaceContent_ctlUnion1_ctlUnion1Child','Edit');
document.getElementById('ctl00_WorkSpaceContent_informationSummary').dispose = function() {
    Array.remove(Page_ValidationSummaries, document.getElementById('ctl00_WorkSpaceContent_informationSummary'));
}
//]]>
</script>

请注意,调用的函数是已添加到 HTML 中的 OnLoadBegin 和 OnLoadEnd

再次编辑

使用:

ScriptManager.RegisterStartupScript(this.Page, typeof(Page),....)

不知道为什么当我使用对页面的引用时它会起作用。

  1. 如果我在页面上有多个控件,这会起作用吗?
  2. 为什么当我使用对页面的引用时它会起作用?

【问题讨论】:

  • 可以添加更新面板的全部代码吗?
  • 您需要控制类型而不是 this 的类型,无论您要针对的控制是什么,您都需要为启动脚本注册该类型,所以如果您正在加载一个控件 MyControl,那么 typeof(MyControl)启动脚本必须知道部分回发的目标
  • 我认为由于添加了来自代码隐藏的控件,您可能会遇到其他问题,脚本管理器会在解析主标记后注册脚本,因此您不能在其中使用 类型替换这样添加的js,id喜欢先排除控件类型虽然
  • 好的,所以你能检查你的脚本是否在标记中,在其中粘贴一个 alert('hello') 以确保它正在运行,而且你正在调用“这里的 js 函数”是是在标记中还是使用 registerClientScriptBlock 添加的,如果是,在哪里?
  • 是的,JS 在标记中。我已经用标记编辑了我的原始帖子

标签: asp.net javascript ajax


【解决方案1】:

您的 registerstartupscript 需要针对控件而不是页面不使用 typeof(Page)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 2010-09-29
    • 2011-09-15
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 2010-09-05
    • 2011-04-30
    相关资源
    最近更新 更多