如何将弹出窗口中选定的gridview行传递到父页面

时间:2017-11-12 11:13:58

标签: javascript c# asp.net

我在asp.net中有2页用c#。

parent.aspx popup.aspx

我将一个查询字符串(id)传递给popup.aspx的页面加载,并使用函数调用id的表格行,并在popup.aspx上显示gridview。

现在我要选择此行,并将详细信息传递到现在打开的parent.aspx文本框中。  一切都很好,表行被传递到文本框中,但它是在parent.aspx页面的新窗口弹出窗口中,我不希望这样。

我希望将详细信息传递到此页面(parent.aspx),现在已打开。

我怎么能这样做。谢谢。

下面是我的传递ID到弹出窗口的代码

protected void btn_search_id_Click(object sender, ImageClickEventArgs e)
        {

          string str1 = Encrypt(txt_sh_p.Text);
          btn_search_id.Attributes.Add("onclick", "window.open('popup.aspx?sh_p_=" + str1 + "','Report','width=750,height=500,toolbar=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,left=200,top=50'); return false;");

        }

我的代码用于读取id并在popup.aspx的页面加载事件中选择行和显示在gridview中的行:

 protected void Page_Load(object sender, EventArgs e)
        {


                DAL.Sab_Ashkh sabt_ashkh = new DAL.Sab_Ashkh();
                List<DAL.Sab_Ashkh> sabt_ashkh_list;

                sabt_ashkh.sh_p = Decrypt(Request.QueryString["sh_p_"]);
                sabt_ashkh_list = sabt_ashkhDB.GetShakh_find(sabt_ashkh.sh_p);
                grid_ashkh.Visible = true;
                grid_ashkh.DataSource = grid_ashkh_list;
                grid_ashkh.DataBind();  

        }
传递行到父页面的

和html代码:

 <Columns>
    <asp:HyperLinkField DataTextField="id_shakh" DataNavigateUrlFields="id_shakh" DataNavigateUrlFormatString="parent.aspx?id_shakh={0}"
     HeaderText="id" ItemStyle-Width = "150" />

            <asp:TemplateField HeaderText="select">
              <ItemTemplate>
                  <asp:CheckBox ID="CheckBox1" runat="server" />
              </ItemTemplate>
              </asp:TemplateField>
    <asp:BoundField ItemStyle-Width = "150px" DataField = "sh_p" HeaderText ="kod" 
                    >

<ItemStyle Width="150px"></ItemStyle>
       </asp:BoundField>
      </Columns>

2 个答案:

答案 0 :(得分:0)

我只是告诉你如何在弹出页面的主页面中更改变量,如: 假设Parent.aspx有:

<script type="text/javascript">
   var items =[];   
</script>

在popup.aspx中,您可以执行以下操作:

window.opener.items.push(yourSelectedRows);

但作为另一种解决方法,您还可以使用本地存储,例如:

localStorage.setItem("selectedRecords", JSON.stringify(selectedRows));

假设selectedRows是您的对象数组或其他任何内容,但根据我的经验,selectedRecords可在所有HTML网页中访问。

希望这对你有所帮助。

答案 1 :(得分:0)

嗨Aria感谢您的回复。我通过查询字符串将id传递到弹出窗口并显示gridview。这个弹出胜利的脚本:

     <script type="text/javascript">
     function SetName() {
         if (window.opener != null && !window.opener.closed) {
             var txtName = window.opener.document.getElementById("txt_id_mah");
             grid = document.getElementById("grid_ashkh");
             var cellPivot;
             if (grid.rows.length > 0) {
                 for (i = 1; i < grid.rows.length; i++) {
                     cellPivot = grid.rows[i].cells[1];
                     TXT.value = cellPivot;
                 }
             }
         }
         window.close();
     }
</script>     

但不起作用。

相关问题