JavaScript 弹出窗体点击按钮返回选择数据的实现

首先是父页面的代码:

  

复制代码 代码如下:

  <head runat="server">

  <title>无标题页</title>

  <%-- <script type="text/javascript">

  function openDia() {

  var returned = window.showModalDialog("Default4.aspx?" + (new Date()), window);

  if (returned) {

  document.getElementById("ret").innerHTML = returned;

  }

  else {

  document.getElementById("ret").innerHTML = "";

  }

  }

  </script> --%>

  <script type="text/javascript">

  function openDia(){

  var returned = window.showModalDialog("Default3.aspx?" + (new Date()), window);

  if (returned){

  document.getElementById("tbtext").value = returned;

  }

  else{

  document.getElementById("tbtext").value = "";

  }

  }

  </script>

  </head>

  <body>

  <form id="form1" runat="server">

  <div id="ret">

  <input id="tbtext" type="text" value="" onclick="openDia();return false;" />

  </div>

  <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="openDia();return false;" />

  <input id="Hidden1" type="hidden" runat="server" />

  </form>

  </body>

  </html>

  关于加上那个 (new Data()) 是要避免showModalDialog页面自动缓存的问题,导致第二次打开页面,数据没有被刷新,这是因为showModalDialog页面如果每次的URL一样的话,它会自动显示以前在缓存里面的数据。

  接着是子页面Default3.aspx的代码:

  

复制代码 代码如下:

  <head runat="server">

  <title>无标题页</title>

  <script type="text/javascript">

  function getSelected(data) {

  var str = data;

  window.returnValue = str.toString();

  window.close();

  }

  </script>

  <base target="_self"/>

  </head>

  <body>

  <form id="form1" runat="server" target="">

  <div>

  <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">

  <Columns>

  <asp:TemplateField>

  <ItemTemplate>

  <asp:LinkButton id="lnkSelect2" runat="server" Text="Select" > </asp:LinkButton>

  </ItemTemplate>

  </asp:TemplateField>

  </Columns>

  </asp:GridView>

  </div>

  </form>

  </body>

  </html>

  Default3.aspx里面有一个gridview控件,数据绑定(自己去绑定,代码就不贴上来了)好后,就是选择自己需要的数据了。

  Default3.aspx.cs:

  [code]

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

  {

  if (e.Row.RowType == DataControlRowType.DataRow)

  {

  LinkButton b = (LinkButton)e.Row.FindControl("lnkSelect2");

  b.Attributes.Add("OnClick", "javascript:getSelected('" + e.Row.Cells[1].Text + "');");

  }

  }

  [html]

  其中Default3.aspx中<head></head>之间的<base target="_self"/>和<form target="">作用是可以避免子页面点击选择按钮后弹出第三个窗体。

  例子就这样,具体还是要根据自己的需求s去体验和改进。