【子窗体大战父窗体】父窗体打开子窗体,子窗体在打开孙子窗体?求传值好思路!

mzjmicrosoft 2009-10-20 04:06:03
子窗体向父窗体传值http://topic.csdn.net/u/20091012/16/9a082f7b-97a4-4475-9d7e-b241fed6df8a.html

父窗体向子窗体传值:http://topic.csdn.net/u/20091019/17/c1e638db-3c07-4053-a498-6e6804801102.html

现在的问题是,父窗体A打开子窗体B,然后子窗体B在打开窗体C(那窗体C就算是窗体B的子窗体了),请问子窗体C该如何向窗体B传值?

具体代码:

1、父窗体A:

 
this.Button1.Attributes.Add("onclick", "window.showModalDialog('子窗体B.aspx','window','dialogWidth:880px;DialogHeight=600px;status:no;help:no;resizable:yes;');window.location='#';");

2、子窗体B:

<script type="text/javascript">
function XuanZe()
{
window.open('孙子窗体C.aspx','newwindow','height=300,width=500,top='+(screen.AvailHeight-300)/2+',left='+(screen.AvailWidth-300)/2+',toolbar=no,menubar=no,scrollbars=no, resizable=no,location=no, status=no');
}
</script>
<asp:TextBox ID="TextBox3" runat="server" Width="200px"></asp:TextBox>
<input id="Button3" type="button" value="选择" onclick="XuanZe()"/>


TextBox3.Text = Request.QueryString["id"].ToString();

3、孙子窗体C:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//鼠标双击事件
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.location.href='子窗体B.aspx?id=" e.Row.Cells[1].Text.ToString() + "';window.close();");

}
}

说明:e.Row.Cells[1].Text.ToString()获取的值是"中文",但我加上Server.UrlEncode()后还是又问题,请问可以这样传值嘛?如果不行?该怎么传值.....
...全文
518 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
mzjmicrosoft 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wuyq11 的回复:]

RowDataBound里
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.location.href='子窗体B.aspx?id="+e.Row.Cells[1].Text.ToString() + "';window.close();");
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.documentById('txt').value='"+e.Row.Cells[1].Text.ToString() + "';window.close();");

[/Quote]
单引号正解
结贴
mike088 2009-10-20
  • 打赏
  • 举报
回复
网页就用cookies或session传吧,不要搞到那么麻烦
wuyq11 2009-10-20
  • 打赏
  • 举报
回复

RowDataBound里
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.location.href='子窗体B.aspx?id="+e.Row.Cells[1].Text.ToString() + "';window.close();");
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.documentById('txt').value='"+e.Row.Cells[1].Text.ToString() + "';window.close();");
mzjmicrosoft 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhong2006 的回复:]
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.document.getElementById('TextBox3').value="+ e.Row.Cells[1].Text.ToString()+";window.close();");
应该是这样
[/Quote]

错误信息:e.Row.Cells[1].Text.ToString()的值未定义
zhong2006 2009-10-20
  • 打赏
  • 举报
回复
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.document.getElementById('TextBox3').value="+ e.Row.Cells[1].Text.ToString()+";window.close();");
应该是这样
wuyq11 2009-10-20
  • 打赏
  • 举报
回复
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.location.href='子窗体B.aspx?id="+e.Row.Cells[1].Text.ToString() + "';window.close();");
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.documentById("txt").value="+e.Row.Cells[1].Text.ToString() + "';window.close();");

HttpUtility.UrlEncode("")编码
HttpUtility.UrlDecode(Request.QueryString["id"].ToString())解码
mzjmicrosoft 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhong2006 的回复:]
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.document.getElementById('TextBox3').value=" e.Row.Cells[1].Text.ToString() + ";window.close();");

[/Quote]

试试...
zhong2006 2009-10-20
  • 打赏
  • 举报
回复
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.document.getElementById('TextBox3').value="+ e.Row.Cells[1].Text.ToString();window.close();");
zhong2006 2009-10-20
  • 打赏
  • 举报
回复
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.document.getElementById('TextBox3').value=" e.Row.Cells[1].Text.ToString() + ";window.close();");
zhong2006 2009-10-20
  • 打赏
  • 举报
回复
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//鼠标双击事件
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.Attributes.Add("onDblClick", "javascript:window.opener.document.getElementById(e_text).value=" e.Row.Cells[1].Text.ToString() + ";window.close();");


}
}
gongsun 2009-10-20
  • 打赏
  • 举报
回复
哦,不用js去写啊...
mzjmicrosoft 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gongsun 的回复:]
b怎么传给a,c就怎么传给b,

[/Quote]
b没有向a传值,只有C向b传值,一定要确保c向b传值后不是重新打开一个b页面...
mzjmicrosoft 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zzxap 的回复:]
在窗体C public 一个变量a

在窗体B获取的时候:xx=窗体C.a

窗体 A B C在同一个命名空间
[/Quote]


e.Row.Attributes.Add("onDblClick", "javascript:window.opener.location.href='子窗体B.aspx?id=" e.Row.Cells[1].Text.ToString() + "';window.close();");

我可以alert拿到这个值:e.Row.Cells[1].Text.ToString(),这是GridView的双击事件,怎么保存这个值?
gongsun 2009-10-20
  • 打赏
  • 举报
回复
b怎么传给a,c就怎么传给b,
zzxap 2009-10-20
  • 打赏
  • 举报
回复
在窗体C public 一个变量a

在窗体B获取的时候:xx=窗体C.a

窗体 A B C在同一个命名空间
mzjmicrosoft 2009-10-20
  • 打赏
  • 举报
回复
分不够可在加....
mzjmicrosoft 2009-10-20
  • 打赏
  • 举报
回复
毁灭沙发...

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧