【问题标题】:Page Load of aspx page called in jquery dialog not calling first time在 jquery 对话框中调用的 aspx 页面的页面加载不是第一次调用
【发布时间】:2012-03-31 18:19:47
【问题描述】:

我正在单击按钮时打开一个 jquery 对话框。我正在将面板作为对话框打开。在那个面板中有 iframe,在那个 iframe src 中我调用了新页面。

我已经在页面加载中初始化了 jquery 对话框,如下所示 /* 在页面加载时初始化对话框*/

$(function(){
    $("#PanelTest").dialog(
    {                    
        minWidth: 500,
        minHeight: 500,
        autoOpen: false
    });    
});

在这个函数中,我在这个函数中打开面板作为对话框

function OpenPopupTest()
{
    $("#PanelTest").dialog('open')
}

我的面板如下

<asp:Panel ID="PanelTest" runat="server" Style="display: none; background-color: White;
    font-size: 12px;">
    <div id="DivTst" style="text-align: left; margin-top: 20px; margin-left: 10px">
        <iframe id="iframeTest" src="Test1.aspx" height="400px" width="400px"></iframe>
         <br />
    </div>
</asp:Panel>

此按钮位于更新面板内。

在 botton 属性后面的代码中,我正在调用 javascript 函数。 ButtonTest.Attributes.Add("onclick","OpenPopupTest()");

当我单击 ButtonTest 按钮时,弹出窗口正在打开。在Test1.aspx 中有1 个文本框,我想填写Test1.aspx 的页面加载事件。我已经编写了用于在 Test1.aspx 的页面加载事件中将值放入文本框中的代码。当我调试代码时,我发现正在调用此代码,但是当弹出窗口打开时,文本框中没有显示任何值。 我认为,当面板所在的页面加载时,页面在 iframe 中调用,即。 Test1.aspx 也正在加载。我想将 1 个值从父页面传递到子页面(Test1.aspx),通过该值填充文本框中的值。

请告诉我如何实现这一目标。

任何帮助将不胜感激。

【问题讨论】:

  • 必须是 iframe 吗?我认为使用 ajax 加载内容会更容易和更好的解决方案,并在 ajax 成功打开对话框。
  • 能否请您告诉我如何使用 ajax 加载内容以及如何打开 ajax 成功对话框。

标签: jquery dialog load


【解决方案1】:

我会做一个普通的 ajax 请求,而不是使用 iframe。

所以我会这样做:

function OpenPopupTest()
{
    //Link is clicked, get data, and open popup when data is ready
    $.get('Test1.aspx', function(data) {
      $('#DivTst').html(data);
      $("#PanelTest").dialog('open');
    });
}

function RefreshPopupTest()
{
    //Link is clicked, update data
    $.get('Test1.aspx', function(data) {
      $('#DivTst').html(data);
    });
}

function OpenPopupIFrameTest()
{
    //Link is clicked, update the iframe and open idalog
   document.getElementById("iframeTest").contentDocument.location.reload(true);
   $("#PanelTest").dialog('open');
}


function RefreshIFrameTest()
{
    //Link is clicked, update the iframe
    document.getElementById("iframeTest").contentDocument.location.reload(true);
}

【讨论】:

  • 谢谢。我能够通过此代码打开弹出窗口。但现在我有另一个问题。在我的 Test1.aspx 页面中,我有 1 个文本框和 4 个按钮。单击 2 个按钮会出现一些服务器端代码。弹出窗口正确打开,但是当我单击任何按钮时,父页面正在消失,并且正在打开父页面弹出窗口,就像在 window.open 中发生的那样。关于这个的任何想法。
  • 那是因为你没有 iframe 了。有哪些功能,是否可以在“父”页面上完成?否则,您可以在对话框打开时更新 iframe。如果您描述他们的工作,请尝试制作一些示例代码,或编辑代码以更新 iframe :)
  • 我无法在父页面中编写服务器端代码。服务器端代码必须在子页面中,即。测试1.aspx。有没有办法在对话框打开时更新 iframe。
  • 好吧,他们不必如此。 Test1.aspx 上的函数有什么作用?如果它们是一种形式,或者其他东西,它们将按原样完美地工作。我用更多示例更新了代码:)
  • @user443305 没问题。请记住将线程设置为接受:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
相关资源
最近更新 更多