【问题标题】:How do I execute javascript in a dynamically-added User Control如何在动态添加的用户控件中执行 javascript
【发布时间】:2011-01-11 03:43:49
【问题描述】:

我在 UpdatePanel 中有一个缩略图照片的 GridView,每行中都有可点击的图标,每个图标都将一个包含小型 Google 地图的用户控件加载到相关行中。这个想法是用户可以对 GridView 中的任何照片进行地理标记(通过单击地图)。

在地图用户控件中,有一些 Javascript 正在初始化地图:

function initializeMap() {
    if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById('Map'), {size: new
GSize(336, 200)});
        // set the map controls, set the centre, etc.
    }
}

问题是:我不知道如何调用initializeMap() 方法。因为它是动态添加到页面中的,所以任何尝试通过 "onClientClick=initializeMap()" 将其链接到调用按钮的尝试都会产生 JS 错误,说明方法未定义。

我试过了

ClientScript.RegisterStartupScript(this.GetType(), "initializeMap", "<script type=\"text/javascript\">alert('Here'); initializeMap();</script>");

但我认为我在那个方面也没有走在正确的轨道上。

【问题讨论】:

  • 整个用户控件是否包含在更新面板中?
  • 是的,整个 GridView 被包裹在 UpdatePanel 中,并且用户控件被添加到该 GridView 的一行

标签: c# asp.net javascript updatepanel


【解决方案1】:

您应该使用ScriptManager 在涉及 UpdatePanel 的地方发出您的 javascript,如下所示:

ScriptManager.RegisterStartupScript(this, this.GetType(), "initializeMap", "initializeMap();", true);

【讨论】:

  • 感谢 Naaem,这就是我最终所做的。
猜你喜欢
  • 1970-01-01
  • 2019-08-17
  • 2017-01-10
  • 1970-01-01
  • 2017-01-06
  • 2010-09-27
  • 1970-01-01
相关资源
最近更新 更多