【问题标题】:In asp.net refernce a parent page's control from javascript在 asp.net 中引用来自 javascript 的父页面控件
【发布时间】:2011-08-09 18:14:07
【问题描述】:

我在 JavaScript 中引用的页面上有一个 DropDownList,如下所示:

var ProjectsDropDownList = '<%= ProjectsDropDownList.ClientID %>';

但是,我必须将 DropDownList 向上移动到父 IFrame。

如何在 JavaScript 中从子 IFrame 引用现在位于父 IFrame 中的控件?

【问题讨论】:

    标签: javascript asp.net iframe


    【解决方案1】:

    如果您的控件在移动到父框架后仍然具有相同的id,您可以这样做:

    var movedElement = window.parent.document.getElementById(
        "<%= ProjectsDropDownList.ClientID %>");
    

    【讨论】:

    • 当我尝试得到“编译器错误消息:CS0103:名称 'ProjectsDropDownList' 在当前上下文中不存在”
    • @user390480,我明白了,我以为您正在将控件移到客户端,但您似乎将它移到了服务器端的另一个 ASP.NET 页面中。与控件交互的代码真的还必须驻留在子框架中吗?因为这两个页面没有简单的方法来共享有关ProjectsDropDownList 的信息,并且使用例如会话状态这样做将是矫枉过正恕我直言。
    • 是的,我将它从一个 asp.net 页面复制到另一个页面。子 IFrame 是第三方选项卡控件的结果,它允许我将其他页面放在选项卡中。选项卡位于 IFrame 中。所以,我需要子 IFrame 来访问父级中的 ProjectsDropDownList,这样它就知道用户选择了哪个项目。
    • @user390480,也许父框架的标记足够静态,您可以在子框架脚本中硬编码下拉列表的ClientID? (我意识到这不是一个最佳解决方案,但会话状态也不是......)
    • 我查看了源代码以获取生成的 ID,奇怪的是 ID 是 ProjectsDropDownList。 (没想到会这样。)所以它现在可以工作了。 var ProjectsDropDownList = window.parent.document.getElementById('ProjectsDropDownList');谢谢。
    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 2011-05-04
    • 2013-11-09
    • 2011-03-12
    相关资源
    最近更新 更多