Как отправить обратно страницу aspx в iframe? - PullRequest
9 голосов
/ 01 мая 2011

У меня есть iframe на моей главной странице aspx, а у этой iframe есть также страница aspx. Страница iframe имеет некоторые элементы управления, а на главной странице aspx есть кнопка отправки. Теперь я хочу, чтобы postback страница iframe на событие нажатия кнопки отправки, используя javascript. Таким образом, главная страница остается статичной, а страница iframe переходит на postback
UPDATE
Спасибо @Kevin Babcock и @Bala R
Предположим, если мне нужно выполнить событие нажатия кнопки (в iframe) на главной странице

Ответы [ 5 ]

4 голосов
/ 01 мая 2011

Из javascript вы можете попробовать что-то вроде

document.frames["iframeid"].document.forms[0].submit();
3 голосов
/ 18 октября 2012

На родительской странице (страница Parent.aspx) содержится одна страница iframe (страница FrameChild.aspx), когда вам нужно вызвать метод события кнопки iframe, тогда мы должны следовать следующим образом.

На родительской странице вызов метода javascript выглядит так:

<script type="text/javascript" language="javascript">
    function functionName()    {
        document.getElementById(iframeID).contentWindow.MyIFrameFunction(); 
    }

iframeID - это идентификатор кадра, MyIFrameFunction () - это имя функции javascript в FrameChild.aspx, и он вызывает метод functionName () через кнопку родительской страницы, которая в свою очередь вызывает нижестоящий MyIFrameFunction () дочернего элемента. функция js.

На дочерней странице (FrameChild.aspx) должна содержаться одна функция.

<script type="text/javascript" language="javascript">
    function MyIFrameFunction() {            
        __doPostBack('btnRenew', 'passparameter');
    }
</script>

предполагается, что в FrameChild.aspx есть одна кнопка.

<asp:Button ID="btnRenew" runat="server" OnClick="btnRenew_Click" />

код позади страницы FrameChild.aspx.

protected void Page_Load(object sender, System.EventArgs e)
{       
    string target = Request["__EVENTTARGET"]; //btnRenew
    string paremeter = Request["__EVENTARGUMENT"];  //passparameter
    if (!string.IsNullOrEmpty(target) && !string.IsNullOrEmpty(arg))
    {
        btnRenew_Click(sender, e);
    }
}

public void btnRenew_Click(object sender, EventArgs e) { }

Приведенный выше код работает для меня.

1 голос
/ 01 мая 2011

Попробуйте следующее:

window.frames[0].document.forms[0].submit();

Это предполагает следующее:

  • у вас нет нескольких фреймов на вашей странице (если это так, вам нужно ссылаться на правильный фрейм в массиве кадров)
  • у вас нет нескольких форм в вашем iframe (если это так, вам нужно ссылаться на правильную форму в массиве форм)
  • страница, которую вы загрузили в iframe, загружается из того же домена, порта и протокола (в противном случае вы не сможете получить доступ к содержимому iframe из-за безопасности браузера)
0 голосов
/ 13 декабря 2013

Поддерживается каждый браузер

 window.frames[0].document.getElementById('btnSave').click();  

или

 window.frames['iframename'].document.getElementById('btnSave').click();
0 голосов
/ 26 сентября 2012

Добавьте кнопку на свою страницу и назовите ее как ID = " btn_ParentSubmit ".Допустим, вы назвали свой идентификатор iframe = " iframeTest "В вашем Page_Load () добавьте это:

if (IsPostBack == false)
{
    //Either place the button in an UpdatePanel (so it won't reload the iFrame) -OR- add "return false;" to prevent the post-back and let the iFrame submit itself. - 09/25/2012 - MCR.
    btn_ParentSubmit.OnClientClick = "javascript:document.getElementById('" + iframeTest.ClientID + "').contentDocument.forms[0].submit(); return false;"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...