![](/img/trans.png)
[英]Can I call an event method of a parent from within an UpdatePanel on a UserControl?
[英]Call parent page javascript from within UpdatePanel inside iFrame
我遇到了在iFrame中從我的UpdatePanel調用javascript的問題。 我可以使用parent.functionName()從iFrame調用父頁面javascript,而不會出現問題。
這是在我的pageName.aspx.cs中。 (由KP提供的代碼( ASP.Net-AJAX UpdatePanel中的Javascript ))
protected override void Page_Load(object sender, EventArgs e)
{
base.Page_Load(sender, e);
StringBuilder scriptStringB = new StringBuilder();
scriptStringB.Append("<script type=\"text/javascript\">");
scriptStringB.Append("function CloseiFrame() {");
scriptStringB.Append(" alert(\"CloseiFrame\");");
scriptStringB.Append(" CloseiFrameThroughParent();");
scriptStringB.Append("}");
scriptStringB.Append("</script>");
RegisterClientStartupScript("CloseiFrame", scriptStringB.ToString());
}
private void RegisterClientStartupScript(string scriptKey, string scriptText)
{
ScriptManager sManager = ScriptManager.GetCurrent(this.Page);
if (sManager != null && sManager.IsInAsyncPostBack)
{
//if a MS AJAX request, use the Scriptmanager class
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), scriptKey, scriptText, false);
}
else
{
//if a standard postback, use the standard ClientScript method
scriptText = string.Concat("Sys.Application.add_load(function(){", scriptText, "});");
this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), scriptKey, scriptText, false);
}
}
我嘗試了其他方法,例如使用Microsoft方法( http://msdn.microsoft.com/zh-cn/library/z9h4dk8y.aspx )。
在pageName.aspx中,它看起來像這樣:
<form id="Form1" class="iFrameForm" method="post" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
...Scripts are included here
</Scripts>
</asp:ScriptManager>
<asp:UpdatePanel runat="server" id="UpdatePanel" updatemode="Conditional">
<ContentTemplate>
<asp:imagebutton id="ExitButton" runat="server"
ImageUrl="~/exit.png"
AlternateText="<%$ Resources:Resource, Exit %>" ToolTip="<%$ Resources:Resource, Exit %>" OnClick="Exit_Click" >
</asp:imagebutton>
</ContentTemplate>
</asp:UpdatePanel>
</form>
當然還有更多,但這是基礎。 該按鈕已生成,並且在“操作”形式的末尾具有“ jscriptfunction = CloseiFrame”。
但是沒有警報,更不用說調用函數了。 我當然可以使用一項服務來解決所有這些問題,但是我真的很想在pages&javascript中解決此問題。
找到了“ A”解決方案。 使用Page_Load檢查它是回發還是正常的頁面加載,我可以從那里調用javascript函數。
protected override void Page_Load(object sender, System.EventArgs e)
{
base.Page_Load(sender, e);
if (IsPostBack) //If it is a postback close the popup
{
StringBuilder scriptStringB = new StringBuilder();
scriptStringB.Append("<script type=\"text/javascript\">");
scriptStringB.Append(" CloseiFrameThroughParent();");
scriptStringB.Append("</script>");
RegisterClientStartupScript("CloseiFrameThroughParent", scriptStringB.ToString());
}
}
但是我必須說,這不漂亮...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.