【问题标题】:How do I send data to another screen after selection选择后如何将数据发送到另一个屏幕
【发布时间】:2013-12-04 09:47:20
【问题描述】:

我有一个页面,如果您单击链接,例如'search' 它将打开一个搜索页面,然后您可以从 gridview 中选择一个项目以在上一个(父)页面中使用。

我想知道如何将信息发送回父页面,然后刷新父页面以填写其他数据?

我猜它会是某种在后面的代码中动态创建的 javascript?

【问题讨论】:

    标签: c# javascript asp.net webforms


    【解决方案1】:

    window.opener是打开当前窗口的窗口。

    因此,如果您从某个页面弹出一个临时窗口,您可以使用弹出窗口中的 window.opener 来引用该页面中的前一个页面对象或全局变量,以将数据放回父窗口。

    由于浏览器中存在各种弹出窗口限制,如今大多数网络应用都避免弹出窗口。相反,人们倾向于在同一个窗口中使用不会与弹出窗口阻止程序发生冲突的叠加层。

    例如,在弹出窗口中,您可以执行以下操作:

    window.opener.document.getElementById("result") = myHTML;
    

    或:

    window.opener.searchData.choice = "foo";
    

    或:

    window.opener.myFunc(data);
    

    【讨论】:

    • 我现在听说过覆盖(令人惊讶的是)它们是否被称为其他东西,或者你能给我一个概念吗?我很想知道,因为我刚刚启动了一个会使用许多弹出窗口的应用程序,我很想知道更好的方法。
    • 实际上只是在查看它之后,叠加层只是您在焦点显示的同一页面上的一个 div 吗?有点像模态窗口?如果是这样,我看不出这有什么帮助,因为如果您有一个包含 60 个弹出链接的页面,您将需要将它们全部放在同一页面上?
    • @connersz - 有很多方法可以制作叠加层,但它通常是一个 div 元素,其中包含内容,以绝对位置定位在其他元素之上,然后在正确的时间使其可见。
    【解决方案2】:

    当你改变输入的值时,使用弹出的div显示,必要的2个步骤:发送ajax数据和在同一页面中接收数据

    【讨论】:

      【解决方案3】:

      我看到的最好的方法是从 opener 调用父函数 我不知道哪个 html 有你的弹出页面,但可能是这样的:

      //child
      ...
      <table>
          <tr>
              <td>item 100</td>  <td><input type="button" id="searchResult100" onclick="updateParent(100)"></td>
          </tr>
      </table>
      ...
      function updateParent(id){
          if(window.opener){
               window.opener.updateData(id);
               window.close();
          }
      }
      

      我不知道您想如何使用在弹出窗口中选择的 ID,您可以隐藏所有具有不同 ID 的结果或将 id 放在某个隐藏字段中,然后回发以使用后面代码中的 ID。需要有关目的的更多信息。

      //parent 
      ...
      function updateData(searchId){
           // use searchId to update
      }
      

      【讨论】:

      • 如果我使用 gridview 将行 ID 传回给父页面,我将如何刷新父页面进行搜索?
      猜你喜欢
      • 1970-01-01
      • 2019-07-18
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多