Как загрузить страницу в iframe, которая находится в модальном всплывающем окне при нажатии кнопки? - PullRequest
2 голосов
/ 20 июня 2011

Как загрузить страницу в iframe, которая находится в модальном всплывающем окне при нажатии кнопки?

Привет, у меня есть сетка с кнопкой ссылки на странице (скажем, например: "page1"), когда я нажимаю кнопку ссылки, мне нужно загрузить страницу (скажем, например: "page2"), передав строку запроса внутри фрейма, который я установил в элементе управления модального всплывающего расширителя.Я могу добиться этого, добавив этот фрагмент кода в разметку

  <asp:TemplateField HeaderText="PO NUMBER" HeaderStyle-HorizontalAlign="Center" 
      ItemStyle-HorizontalAlign="Center" ItemStyle-Width="100px">
    <ItemTemplate>
      <asp:HiddenField ID="hfPOAID" runat="server" 
      Value='<%# Bind("POAtID") %>'></asp:HiddenField>
      <asp:LinkButton ID="lbtnPO" runat="server" ForeColor="Blue" 
      Text='<%# Bind("PONUM") %>' CommandName="POview" CommandArgument=
      '<%# ((GridViewRow) Container).RowIndex %>' AutoPostBack="True">
      </asp:LinkButton>
<cc1:ModalPopupExtender ID="mpeStatus" OnOkScript="__doPostBack('Ok','')"  
runat="server" TargetControlID="lbtnPO" PopupControlID="pnlPerson" DropShadow="true" 
CancelControlID="ibCancel1" >  </cc1:modalpopupextender>              
<asp:Panel ID="pnlPerson" runat="server" Style="display: none" 
 Width="900px" Height="550px" CssClass="modalPopup">
   <div style="float: right;">
      <asp:ImageButton ID="ibCancel1" runat="server" ImageUrl="~/Images/del.png" 
      Width="20px" Height="20px" /> 
   </div>
   <div>
    <table>
      <tr>
        <td align="center" style="font-size: 14px;">
          <b>View Purchase Order</b>
        </td>
     </tr>
     <tr>
        <td>
          <iframe name="FRAME1" width="800" height="500" frameborder="0" 
              src='<%#String.Format("ShowPO.aspx?Poid={0}", Eval("POAtID"))%>'>
          </iframe>
        </td>
       </tr>
     </table>
   </div>
  </asp:Panel>
  </ItemTemplate>
  <HeaderStyle HorizontalAlign="Center"></HeaderStyle>
  <ItemStyle HorizontalAlign="Center"></ItemStyle>
  </asp:TemplateField>

и на странице «Код позади» ----------------

   protected void gvPOCloseRpt_OnRowCommand(object sender, GridViewCommandEventArgs e)
   {
   try
   {
     if (e.CommandName == "POview")
     {
          int index = Int32.Parse(e.CommandArgument.ToString());
          HiddenField hfPOAID = (HiddenField)gvPOCloseRpt.Rows[index].FindControl
          ("hfPOAID");
          Session["POID"] = hfPOAID.Value;
          string Script = "window.open('http://mak-erp/deverp/Purchase/poprnt.aspx')";
          System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, 
          this.GetType(), "test", Script, true);
     }
   }
   catch (Exception ex)
   {
     Response.Write(ex);
   }
}

Но, если в сетке есть объемные данные, загрузка страницы занимает слишком много времени, поэтому мне нужно загружать страницу только по событию нажатия кнопки ссылки в сетке? ......

Может ли кто-нибудь помочь мне сделать это .....

Заранее спасибо ...........

Динешкумар Р

Ответы [ 2 ]

1 голос
/ 20 июня 2011

Вы можете попробовать ThickBox, чтобы открыть страницу 2.

И вы можете использовать строку запроса url для передачи параметра POID.

см. Дополнительную информацию о ThickBox: http://jquery.com/demo/thickbox/

Или вы можете использовать ajax для этого!

0 голосов
/ 24 февраля 2012

Попробуйте использовать модальное всплывающее окно jQuery, ссылаясь на div, который в свою очередь содержит iframe для отображения страницы.Нравится:

$('#btnOpenPopup').click(function (e) {
    $('#frmLoadPage').attr('src','your_page_url');
    $('#divContainer').modal();
    return false;
});

<div id="divContainer">
  <iframe id="frmLoadPage" ></frame>
</div>
...