Javascript 将值从弹出页面传输到父页面

Javascript 将值从弹出页面传输到父页面,javascript,asp.net,c#-4.0,Javascript,Asp.net,C# 4.0,我有一个父页面inner4.aspx和一个弹出页面popupemail.aspx。现在,我正在弹出窗口中提取电子邮件id,并显示在gridview中,当用户选择电子邮件id时,它会通过javascript函数传输到父页面 家长代码: function setText1(txt) { document.getElementById('TextBox4').value = txt; } 弹出窗口的代码: protected void GridView1_Se

我有一个父页面inner4.aspx和一个弹出页面popupemail.aspx。现在,我正在弹出窗口中提取电子邮件id,并显示在gridview中,当用户选择电子邮件id时,它会通过javascript函数传输到父页面

家长代码:

function setText1(txt) {
            document.getElementById('TextBox4').value = txt;
        }
弹出窗口的代码:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = GridView1.SelectedRow;
        //TextBox2.Text = row.Cells[1].Text;


        ScriptManager.RegisterStartupScript(this,GetType(), "settxt", "setText1('"+ row.Cells[1].Text + "');", true);
    }
值不会被传输。
请帮助

您可以使用javascript调用父页面

window.opener.document.getElementById("TextBox4").value = txt;
或者您也可以使用相同的方法调用父页面函数

window.opener.setText();

setText()函数写在父页面上,不在弹出页面中。

将修改后的行复制到代码中

ScriptManager.RegisterStartupScript(this,GetType(), "settxt", "window.opener.setText1('"+ row.Cells[1].Text + "');", true);

否则,在所选索引更改后,请在服务器端设置一些属性

in the cs
protected string SelectedValue{
   get {
      return "whatever";
   }
}


protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridViewRow row = GridView1.SelectedRow;
        //TextBox2.Text = row.Cells[1].Text;


        SelectedValue = row.Cells[1].Text
    }

in the js
$(document).ready(function(){
    var selectedValue= '<%=SelectedValue%>';
    window.opener.document.getElementById("TextBox4").value = selectedValue;

});
cs中的

受保护的字符串SelectedValue{
得到{
返回“无论如何”;
}
}
受保护的void GridView1\u SelectedIndexChanged(对象发送方,事件参数e)
{
GridViewRow行=GridView1.SelectedRow;
//TextBox2.Text=row.Cells[1].Text;
SelectedValue=行。单元格[1]。文本
}
在js中
$(文档).ready(函数(){
var selectedValue='';
window.opener.document.getElementById(“TextBox4”).value=selectedValue;
});

可能有语法错误。希望这能有所帮助。

你能写一个简单的警报,看看函数是否也在根据你设置id的方式运行,确保你有客户端模式,但它不起作用。我应该从updatepanel中删除gridview吗?你可以通过添加调试器来尝试吗;并在调试模式(F5)下运行项目,例如ScriptManager.RegisterStartupScript(这是GetType(),“settxt”,“debugger;window.opener.setText1(“+”行.Cells[1].Text+”;“,true));并检查光标是否在调试器处停止;如果不停止,则意味着不调用整个脚本