我在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>
答案 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>
但不起作用。