【问题标题】:How to call javascript function in the parent page from user control?如何从用户控件调用父页面中的javascript函数?
【发布时间】:2016-07-01 06:48:28
【问题描述】:

我有一些名为 myUserControl 的 ASP.NET 用户控件。

我还有一些名为 myAspxPage 的 aspx 页面。

myAspxPage 包含 myUserControl 并且 myAspxPage 包含此 javascript 函数:

     function SetProgressBar() 
     {
          //some logic          
     }

在某些时候我需要调用SetProgressBar javascipt 函数时这个按钮:

 <asp:LinkButton ID="prevItem" runat="server" ToolTip="previous" Style="color: #000000;" OnClientClick="to call SetProgressBar function"> << </asp:LinkButton>

在myUserControl中被点击。

我试过这个:

  OnClientClick="parent.SetProgressBar()"

还有这个:

OnClientClick="SetProgressBar()"

但上面的例子不起作用。

所以我的问题是如何从用户控件调用父页面中的 javascript 函数?

【问题讨论】:

  • “上面的例子不起作用” - 基于什么?第二个变体很好。

标签: javascript asp.net


【解决方案1】:

我想如果你添加

ClientIdMode="static"

到你的按钮并取出 OnClientClick="" 所以它看起来像这样:

 <asp:LinkButton ID="prevItem" runat="server" ToolTip="previous" Style="color: #000000;" ClientIdMode="static"> << </asp:LinkButton>

然后像这样在javascript中直接使用onclick:

document.getElementById("prevItem").onclick = function SetProgressBar(){

// some logic

}

应该可以的...

【讨论】:

    【解决方案2】:

    当用户控件添加到任何 aspx 页面中时,它不是一个单独的页面,所有内容都呈现为单个页面,因此简而言之,aspx 页面和用户控件之间没有父子类型的东西。

    您应该能够从 usercontrol 调用任何 javascript 函数。

    如果您使用 onClientClient= 调用函数,则不需要 ClientIDMode=static。

    所以要测试函数是否被触发,请在函数的第一行放一个警报,看看它是否得到警报。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-09
      • 2010-09-26
      相关资源
      最近更新 更多