【问题标题】:Updating textbox within UpdatePanel from codebehind of another page that is in an iframe in asp.net C#从asp.net C#中iframe中另一个页面的代码隐藏更新UpdatePanel中的文本框
【发布时间】:2013-07-25 21:11:40
【问题描述】:

我正在开发一个 Web 应用程序。在父页面上,UpdatePanel 中有一个状态文本框。父页面上有一个iframe,在页面加载时会在 C# 中执行一些代码隐藏函数,这恰好需要很长时间。 (执行了好几行代码)

我想知道如何从后面的 iframes 代码中调用父页面,并在函数的不同时间对 UpdatePanel 进行更新。

以下是主页中的一些 html:

<asp:UpdatePanel ID="StatusPanel" ClientIDMode="Static" runat="server" UpdateMode="Conditional">
  <ContentTemplate>
    <asp:TextBox ClientIDMode="Static" ID="txtStatus" runat="server" Width="99%" Enabled="False"></asp:TextBox>
  </ContentTemplate> 
</asp:UpdatePanel>    

还有一些来自 iframe 的 c# 代码隐藏:

foreach (CorpLead lead in leadsPriority1)
{
    UpdateStatus(lead.name);
    xRMData.AssignCorpLead(agentProfiles, lead, service);
}

private void UpdateStatus(string lead)
{
    if (this.Parent.FindControl("txtStatus") != null)
    {
        ((TextBox)this.Parent.FindControl("txtStatus")).Text = lead;
        ((UpdatePanel)this.Parent.FindControl("StatusPanel")).Update();
    }    
}

【问题讨论】:

  • 所以基本上父页面主机更新面板和单独的 IFRAME。当 iframe 加载时,您希望 UpdatePanel 定期刷新?
  • 是的,到托管更新面板和单独 iframe 的父页面。在页面加载时,iframe 调用一个函数。在该函数中,我想在其中的各个点调用一个函数来更新父页面的更新面板。

标签: c# asp.net iframe updatepanel


【解决方案1】:

如果没有一些代码示例,这只是对您特定问题的猜测,但您可以像这样访问父页面上的控件:

if (this.Parent.FindControl("ControlID") != null)
{
    ((Control)this.Parent.FindControl("ControlID")).Property = value;
}

这就是你要找的吗?

【讨论】:

  • 理论上,这听起来和我想要的完全一样,但是当我去实现你的代码时,我找不到嵌套在我的更新面板中的 asp.net 文本框。我只是不断收到空引用错误。
  • 请发布一个代码示例,我们可能会深入了解它。
  • 进入工作后,我做了更多测试,似乎this.Parent为空。
  • 您可能必须传递会话变量才能使其工作,因为您使用的是 iframe 而不是 ASP.NET 控制模型(如主/子场景)。我的建议是重组您的页面,使他们能够更轻松地相互交谈,但如果这不可能,您可以尝试将 UpdatePanel 放在您的 iframe 页面中,并让您的 iframe 页面代码更新它自己的文本框,这样您就不用'不必尝试在页面之间交谈。
【解决方案2】:

由于您的 IFRAME 调用了一个函数 - 它可以调用父页面的函数(我说的是 JavaScript 函数)。该父函数可以使用setInterval 以编程方式“单击”隐藏的LinkButton 控件,该控件设置为UpdatePanel 的触发器。

结果:UpdatePanel 以给定的时间间隔刷新

【讨论】:

  • 问题是我希望 UpdatePanel 使用来自 IFRAME 代码隐藏函数的信息进行更新。例如,它有一个对象列表并处理它们。我希望 UpdatePanel 在迭代它们时使用这些对象的名称进行更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-15
相关资源
最近更新 更多