CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

如何将父页面的TextBox的Text传到子页面(弹出页面)?

楼主xjh103(Beyond)2006-03-26 14:37:35 在 .NET技术 / ASP.NET 提问

最近在做一个项目时,要求从父页面把Textbox的值传到弹出页面,子页面的触发事件由父页面的button控件触发,刚开始做的时候我是用Window.open("webform.aspx?id="+Textbox1.ClientID+"&value="+Textbox1.Text",,)后边的参数我省去了,如果传递的参数的字符串不多的话,那么结果是正确的,但是当Textbox的值很多的时候,当传值时,它运行到这一句话的时候,就会报错,说无效的指针,那位大虾能给小弟一点建议! 问题点数:10、回复次数:31Top

1 楼zhang_frank(。。。。。。。。。。)回复于 2006-03-26 16:43:20 得分 0

你改成post试试看Top

2 楼lhzyn(无心睡眠)回复于 2006-03-26 16:49:14 得分 1

用URL传值由长度限制  
  window.open打开的窗口可以用window.opener得到父窗口的对象  
  你可以在自窗口的onload中些段JS得到你要传的值Top

3 楼bwtgod()回复于 2006-03-26 16:53:35 得分 0

可以考虑session  
   
  在子页面request就好了Top

4 楼pbwf(书生)回复于 2006-03-26 16:57:04 得分 0

顶一下.Top

5 楼xjh103(Beyond)回复于 2006-03-26 18:26:15 得分 0

zhang_frank你提到的post方法怎么用?谢谢!Top

6 楼xjh103(Beyond)回复于 2006-03-26 18:30:06 得分 0

lhzyn(无心睡眠)你说的这个方法,我用过,方法是可行的,但是,我在后台的代码中要用到Textbox的值,而页面运行的顺序是先是后台代码,然后才是前台的JS,所以这样做只能在JS中得到值,而在CS文件中却无法得到这些值.Top

7 楼stormlly()回复于 2006-03-26 19:24:32 得分 0

用session应该是可以搞定的Top

8 楼wolaile27(7号飓风)回复于 2006-03-26 21:33:40 得分 0

用session来传递你需要的值,应该可以搞定你的问题Top

9 楼xjh103(Beyond)回复于 2006-03-27 08:21:00 得分 0

Session我考虑过了,因为父页面是不刷新的,所以,Session还是不能把变化的值传递过来。Top

10 楼lengfeng8866(公孙恋雪(专心学习WEB开发))回复于 2006-03-27 08:55:12 得分 1

当父窗口中的textbox的值发生更改时,在你的父窗口中使用xmlhttp把这个值post给子窗口,应该可以吧。你可以试试。  
   
   关于xmlhttp的使用,请参照 http://www.xmlhttp.cn/manual/xmlhttprequest.htmlTop

11 楼pbwf(书生)回复于 2006-03-27 09:03:15 得分 0

继续关注Top

12 楼xjh103(Beyond)回复于 2006-03-27 10:13:30 得分 0

lengfeng8866(公孙恋雪(专心学习WEB开发))这位大虾的建议很好,但是我是刚来实习不久,没有学过Xml,你能够给出更详细的解决方案么?十分感谢!Top

13 楼thirstlearn(程序也是一种生产力)回复于 2006-03-27 16:29:22 得分 6

父窗口   father.htm  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN">  
  <HTML>  
  <HEAD>  
  <TITLE>New   Document   </TITLE>  
  <META   NAME="Generator"   CONTENT="EditPlus">  
  <META   NAME="Author"   CONTENT="">  
  <META   NAME="Keywords"   CONTENT="">  
  <META   NAME="Description"   CONTENT="">  
  <script   language="javascript">    
  <!--    
  function   openChild(){    
   
  var   k   =   window.showModalDialog("child.htm",window,"dialogWidth:335px;status:no;dialogHeight:300px;");    
  if(k   !=   null)    
  document.getElementById("txt11").value   =   k;    
  }    
  function   Button1_onclick()   {  
  window.open("../login.aspx","mainFrame");  
  }  
   
  //-->  
  </script>  
  </HEAD>  
  <BODY>  
  <br>  
  传递到父窗口的值:<input   id="txt9"   type="text"   value="3333333333333"><br>  
  返回的值:<input   id="txt11"   type="text"><br>  
  子窗口设置的值:<input   id="txt10"   type="text"><br>  
  <input   type="button"   value="openChild"   onclick="openChild()">   <INPUT   id="Button1"   type="button"   value="setMain"   name="Button1"   onclick="return   Button1_onclick()">  
  <a   href="../login.aspx"   target="mainFrame"><img   src="../img/C.gif"   border="0"></a>  
  </BODY> <script   language="javascript">openChild();</script>  
  </HTML>  
   
   
  子窗口   child.htm  
   
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN">    
  <HTML>    
  <HEAD>    
  <TITLE>   New   Document   </TITLE>    
  <META   NAME="Generator"   CONTENT="EditPlus">    
  <META   NAME="Author"   CONTENT="">    
  <META   NAME="Keywords"   CONTENT="">    
  <META   NAME="Description"   CONTENT="">    
  <meta   http-equiv="Expires"   CONTENT="0">    
  <meta   http-equiv="Cache-Control"   CONTENT="no-cache">    
  <meta   http-equiv="Pragma"   CONTENT="no-cache">    
   
  </HEAD>  
   
  <BODY>    
  <br>父窗口传递来的值:<input   id="txt0"   type="text"><br>    
  输入要设置父窗口的值:<input   id="txt1"   type="text"><input   type   ="button"   value="设置父窗口的值"   onclick="setFather()"><br>    
  输入返回的值:<input   id="txt2"   type="text"><input   type   ="button"   value="关闭切返回值"   onclick="retrunValue()">    
  <input   type   ="button"   value="关闭刷新父窗口"   onclick="">    
  <input   type   ="button"   value="父窗口的目的窗口打开"   onclick="opiframe();"   ID="Button1"   NAME="Button1">    
  </BODY>    
  </HTML>    
   
  <script   language=javascript>    
  <!--    
  var   k=window.dialogArguments;    
  //获得父窗口传递来的值    
  if(k!=null)    
    {    
    document.getElementById("txt0").value   =   k.document.getElementById("txt9").value;    
    }    
    //设置父窗口的值    
  function   setFather()    
  {    
    k.document.getElementById("txt10").value   =   document.getElementById("txt1").value    
  }    
  //  
  function   opiframe()  
  {  
  //k.Button1_onclick();  
  alert(k);  
  k.document.getElementById("Button1").click();    
  }  
  //设置返回到父窗口的值    
  function   retrunValue()    
  {    
  var   s   =   document.getElementById("txt2").value;    
  window.returnValue=s;    
  window.close();    
  }    
  //-->    
  </script>    
   
   
   
  Top

14 楼thirstlearn(程序也是一种生产力)回复于 2006-03-27 16:48:00 得分 0

上面主要是字窗口传到父窗口,如果是父窗口传到字窗口,还不简单?  
  <script   language="javascript"   type="text/javascript">  
  window.showModalDialog("child.htm?value="+document.all.TextBox1.vale,window,"dialogWidth:335px;status:no;dialogHeight:300px;");    
  </script>  
   
  在字窗口接收:   string   jieshou=Request.Params[0];(后台代码)  
  也可写在前台:<asp:textbox   id="tb_cId"   runat="server"   Width="155px"   Text="<%=Request.Params[0]%>"></asp:textbox>  
  Top

15 楼SimpleDay(今天你穿内裤了吗?)回复于 2006-03-27 17:06:19 得分 0

dim   string1   as   string=opnner.document.getElementById("txt11").valueTop

16 楼AIRFLYNET(汪洋中的一条船)回复于 2006-03-27 17:11:21 得分 0

window.opnner.document.getElementById("txt11").value;  
  Top

17 楼xjh103(Beyond)回复于 2006-03-27 17:34:21 得分 0

谢谢大家的支持!  
  可能是我没把需求说明白,我做的这个项目是这样的,   【label】【Textbox】【hyplink】  
  父页面大概是这样子设计的,点击hyplink,链接到子页面,在子页面有两个Listbox,一个用来显示数据库中的所有数据,另一个用来显示用户所选择的数据,如果父页面的Textbox不为空,一方面这个值要传到子页面,并且在Listbox中显示,另一方面我在子页面的Page_Load的时候要根据Textbox的值是否为空,来对数据库捞取数据。Top

18 楼thirstlearn(程序也是一种生产力)回复于 2006-03-27 17:41:43 得分 0

你用的是什么语言?C#还是VB?Top

19 楼xjh103(Beyond)回复于 2006-03-27 17:41:56 得分 0

我刚开始是这么做的,在父页面:hyplink.NavigateUrl="javascript:ShowStaff(\""+   strDistributeType   +"\",\"Department\");void(0);";  
  function   ShowStaff(dstribtype,typeid)  
  {  
      var   CtrlTxtDept   =   document.getElementById(""txtDept"");  
        if   (dstribtype   ==   ""--Please   Select--"")  
        {  
                return;  
        }  
  window.open("/ManpowerSelect.aspx?DistributeType="+dstribtype+"&StrCondition="   +   typeid+   "&StrTxtDept=""+CtrlTxtDept.value,"Select"   ,   "width=450,height=330,scrollbars=no,toolbar=no,menubar=no,resizable=yes,location=no,status=no");  
  }  
  在子页面 string   strDistributeType   =   Request["DistributeType"].Trim();  
  string   strConditions   =   Request["StrCondition"].Trim();  
  string   strDept   =   Request["StrTxtDept"].Trim();  
  switch(strConditions)  
  {case   "Department":  
  LoadDepartment(strDept);  
  break;Top

20 楼thirstlearn(程序也是一种生产力)回复于 2006-03-27 17:42:32 得分 0

其实你完全可以通过接收的参数值来判断啊!Top

21 楼xjh103(Beyond)回复于 2006-03-27 17:46:45 得分 0

刚才没写完,发了出去。  
  我这样子做对传递一些字符串比较少的时候,是没有问题的,但是当传递的字符串很多,比如超过10000个,当程序运行到window.open时就会报错,说无效的指针。Top

22 楼thirstlearn(程序也是一种生产力)回复于 2006-03-27 17:47:33 得分 0

网页之间传递参数最常用的是aa.htm?parm1=aa&parm2=bb&parm3=cc这种方法,后面可以给多个参数,其中parm1,parm2,parm3是参数名,可以自己定义,等号后面的aa,bb,cc是你所要传递的值,这些值你可以在接收的页面接收   用Request方法即可,Request.Params[0]是接收第一个参数,Request.Params[1]接收的是第二个参数,依次类推(C#语言)。Top

23 楼thirstlearn(程序也是一种生产力)回复于 2006-03-27 17:55:42 得分 0

哇你这样传递参数估计不能太多哦,具体又没有限制或者多少限制我不太清楚,太多的话估计就会有错,如果你要传10000个也太多了吧!!如果你要传很多的话,可以用其他方法,可以将要传递的参数放在数组里面,然后赋值给Session,用window.showModalDialog或者window.showModelessDialog方法打开字窗口是可以接受Session的。Top

24 楼xjh103(Beyond)回复于 2006-03-27 17:59:37 得分 0

可是问题就在这了,关闭子页面后,父页面不刷新(要求),这样的话Session好像还是第一次Page_Load的数据。Top

25 楼thirstlearn(程序也是一种生产力)回复于 2006-03-27 18:14:26 得分 0

我给你的第一个例子里面有子窗口和父窗口交互,完全可以实现自窗口关闭时刷新父窗口  
   
  关闭刷新父窗口的例子    
   
  farther.html    
  ---------------------------    
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN">    
  <HTML>    
  <HEAD>    
  <TITLE>   New   Document   </TITLE>    
  <META   NAME="Generator"   CONTENT="EditPlus">    
  <META   NAME="Author"   CONTENT="">    
  <META   NAME="Keywords"   CONTENT="">    
  <META   NAME="Description"   CONTENT="">    
  <script   language="javascript">    
  <!--    
  function   openChild()    
  {    
   
    var   k   =   window.showModalDialog("child.html",window,"dialogWidth:335px;status:no;dialogHeight:300px");    
    if(k   ==   1)//判断是否刷新    
    {    
      alert('刷新');    
      window.location.reload();    
    }    
  }    
  //-->    
  </script>    
  </HEAD>    
   
  <BODY>    
  <br>传递到父窗口的值:<input   id="txt9"   type="text"   value="3333333333333"><br>    
  <input   type   ="button"   value="openChild"   onclick="openChild()">    
  </BODY>    
  </HTML>    
  ----------------------------------------------------    
  child.html    
  --------    
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN">    
  <HTML>    
  <HEAD>    
  <TITLE>   New   Document   </TITLE>    
  <META   NAME="Generator"   CONTENT="EditPlus">    
  <META   NAME="Author"   CONTENT="">    
  <META   NAME="Keywords"   CONTENT="">    
  <META   NAME="Description"   CONTENT="">    
  <meta   http-equiv="Expires"   CONTENT="0">    
  <meta   http-equiv="Cache-Control"   CONTENT="no-cache">    
  <meta   http-equiv="Pragma"   CONTENT="no-cache">    
   
  </HEAD>    
   
  <BODY>    
  <br>父窗口传递来的值:<input   id="txt0"   type="text"><br>    
   
  <input   type   ="button"   value="关闭刷新父窗口"   onclick="winClose(1)">    
  <input   type   ="button"   value="关闭不刷新父窗口"   onclick="winClose(0)">    
   
  </BODY>    
  </HTML>    
   
  <script   language=javascript>    
  <!--    
  var   k=window.dialogArguments;    
  //获得父窗口传递来的值    
  if(k!=null)    
    {    
    document.getElementById("txt0").value   =   k.document.getElementById("txt9").value;    
    }    
   
  //关闭窗口返回是否刷新的参数.    
  function   winClose(isRefrash)    
  {    
   
  window.returnValue=isRefrash;    
  window.close();    
  }    
  //-->    
  </script>    
   
  --------------------------    
  Top

26 楼xjh103(Beyond)回复于 2006-03-27 18:34:04 得分 0

感谢thirstlearn(程序也是一种生产力)不倦的解答,按照你这样子做肯定能在子页面得到值,可是我还有一个要求还没实现,就是在子页面的Page_Load的时候要根据Textbox的值是否为空,来对数据库捞取数据。   如果在Page_Load里直接用string     strDept=txt0.value的话,那么txt0.value的值并不是父页面传过来的值。这也是我感到困惑的地方!  
  再次感谢thirstlearn!Top

27 楼thirstlearn(程序也是一种生产力)回复于 2006-03-28 08:26:25 得分 0

其实你完全可以通过接收的参数值来判断啊!Top

28 楼anthit()回复于 2006-03-28 08:38:42 得分 0

在父页面连接时传递变量   在子页面request它就可以Top

29 楼sth79(阿海子)回复于 2006-03-28 10:03:31 得分 0

服务器端、客户端控件互相传递数据怎么弄?  
   
  Top

30 楼flysky2006(大师)回复于 2006-03-28 11:35:55 得分 2

按照你这样子做肯定能在子页面得到值,可是我还有一个要求还没实现,就是在子页面的Page_Load的时候要根据Textbox的值是否为空,来对数据库捞取数据。   如果在Page_Load里直接用string     strDept=txt0.value的话,那么txt0.value的值并不是父页面传过来的值。  
   
  可在textbox值改变后,调用window.location.reload();    
  Top

31 楼xjh103(Beyond)回复于 2006-03-28 17:07:25 得分 0

flysky2006(大师)的方法我刚才试了一下,它显示的值还是为空,而且在重新Load的时候,从父页面Window.open("webform.aspx?id="+Textbox1.ClientID+"&value="+Textbox1.Text",,)传过来的id和value都没有了,就是不能在子页面用Request["id"]了。Top

相关问题

  • showModalDialog弹出页面
  • A页面有个TEXTBOX,点击LINKBUTTON打开另一个页面B,同时把B页面的TEXTBOX的值传到另一页面,供这个页面使用;
  • 如何弹出新页面
  • 页面弹出与关闭
  • 自动弹出页面
  • 如何做弹出页面?
  • 弹出页面问题
  • 我在页面A中打开一个弹出窗口B,现需要将B中控件BTEXTBOX的值d传到A的控件ATEXTBOX1,atextbox2,和atextbox3中,如何能做到?
  • 弹出页面问题(JAVA代码)
  • 弹出新页面的问题

关键词

  • c#
  • 值
  • 输入
  • 父窗口

得分解答快速导航

  • 帖主:xjh103
  • lhzyn
  • lengfeng8866
  • thirstlearn
  • flysky2006

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo