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

datagrid中textbox的父子页面传值问题

楼主zhoujia1983(佳佳)2006-03-03 17:20:44 在 .NET技术 / ASP.NET 提问

一个datagrid中添加了一个模板列textbox,现在有个问题是当编辑时,点选textbox项可以弹出一个对话框,在弹出的对话框中选择的值如何返回到datagrid的textbox中。当textbox不在datagrid的模板列中用showModalDialog可以传值,但是在datagrid中却不行。请问高手有什么解决的方法? 问题点数:100、回复次数:15Top

1 楼net_lover(【孟子E章】)回复于 2006-03-03 17:22:56 得分 0

用客户端的脚本,不要执行服务器端的事件Top

2 楼zhongkeruanjian(编程亮子)回复于 2006-03-03 17:32:41 得分 0

怎么会找不到呢?  
  在你的JS里执行这个方法的时候肯定能找到这个Textbox啊,不就是this么?Top

3 楼zhoujia1983(佳佳)回复于 2006-03-04 08:22:12 得分 0

a.aspx页面:  
   
  <asp:TemplateColumn   HeaderText="实学学员">  
  <HeaderStyle   Width="15%"></HeaderStyle>  
  <ItemStyle   HorizontalAlign="Center"></ItemStyle>  
  <ItemTemplate>  
  <asp:TextBox   Runat="server"   ID="realname"   Width="120"   onfocus="StudentSelect()"   Text=<%#   DataBinder.Eval(Container.DataItem,"realname")%>></asp:TextBox>  
  </ItemTemplate>  
  </asp:TemplateColumn>  
   
   
  <script   language="javascript">  
   
  function   StudentSelect()  
  {  
  var   ret;  
  ret   =   window.showModalDialog("StudentSelect.aspx",window,"dialogHeight:400px;dialogWidth:400px;center:Yes;Help:No;Resizable:No;Status:Yes;Scroll:auto;Status:no;");  
  }  
   
  </script>  
   
  StudentSelect.aspx:  
   
  <script   language=javascript>  
  function   confirmSelect1()  
  {  
  var   parwin   =   window.dialogArguments;  
  var     val=   document.all('student').value;  
  parwin.document.all.realname.value=val;  
  window.close();  
  }  
  </script>  
   
   
  <form   id=TreeView   method=post   runat="server">  
  <table   width="100%"   border=0>  
      <tr>  
          <td   class=cpx12hei   align=center>  
              <P>&nbsp;</P><asp:radiobuttonlist   id=RadioButtonList1   runat="server"   Font-Size="X-Small"   AutoPostBack="True"   RepeatColumns="5"   RepeatDirection="Horizontal"></asp:radiobuttonlist></TD></TR>  
      <TR>  
   
          <TD   class=cpx12hei   align=center>  
              <P><FONT   face=宋体    
              ></FONT>&nbsp;</P>  
              <P><INPUT   class=ButtonCss   onclick=confirmSelect1()   type=button   value="   确   定   "></P></TD></TR></TABLE>  
  <table   width="100%"   border=0>  
      <tr>  
          <td   class=cpx12hei>所选学员为:<asp:textbox   id=student   runat="server"   Width="80px"></asp:textbox>&nbsp;&nbsp;    
              学员编号为:<asp:textbox   id=xybh   runat="server"   Width="80px"></asp:textbox></td></TR></TABLE></FORM>  
   
  我用的是客户端代码啊!!Top

4 楼zhongkeruanjian(编程亮子)回复于 2006-03-04 08:32:52 得分 0

javescript简称JS    
   
  function   StudentSelect()  
  {  
  var   ret;  
  ret   =   window.showModalDialog("StudentSelect.aspx",window,"dialogHeight:400px;dialogWidth:400px;center:Yes;Help:No;Resizable:No;Status:Yes;Scroll:auto;Status:no;");  
  //加上   this.value   =   ret;  
  }  
  Top

5 楼zhoujia1983(佳佳)回复于 2006-03-04 09:02:01 得分 0

//加上   this.value   =   ret;  
  也不行啊,还是提示:“document.all.realname.value”为空或不是对象Top

6 楼zhoujia1983(佳佳)回复于 2006-03-04 10:08:43 得分 0

编程亮子请问还有其他的错误吗?  
  请指教!!Top

7 楼zhongkeruanjian(编程亮子)回复于 2006-03-04 10:44:07 得分 0

parwin.document.all.realname.value=val;  
   
  这句话不要,TextBox   在Grid模板内的时候,最后生成的客户端ID不是你想要的realname,ASP。NET会给TextBox   重新命名一个层次ID,所以不能直接用realname来得到这个TextBoxTop

8 楼zhoujia1983(佳佳)回复于 2006-03-04 11:14:58 得分 0

那该如何确定这个层次的textbox的id??Top

9 楼zhoujia1983(佳佳)回复于 2006-03-04 11:20:23 得分 0

去掉那行后,还是不能把数据传到textbox中,  
  Top

10 楼zhongkeruanjian(编程亮子)回复于 2006-03-04 14:10:05 得分 0

<script   language=javascript>  
  function   confirmSelect1()  
  {  
  var   parwin   =   window.dialogArguments;  
  var     val=   document.all('student').value;  
  window.returnValue   =   val;//加上这句话  
  }  
  </script>  
  Top

11 楼zhoujia1983(佳佳)回复于 2006-03-06 08:19:15 得分 0

window.returnValue   =   val;//加上这句话  
  也不行,当固定选取其中的一个id如下:  
  parwin.document.all.DataGrid1__ctl8_realname.value=val;  
  这个就可以把数据传回去,但是这就不能动态传值。Top

12 楼zhongkeruanjian(编程亮子)回复于 2006-03-06 09:35:46 得分 100

不好意思,  
  将   this.value   =   ret;  
  改为:event.srcElement.value   =     ret;  
   
  其实这里的this指的是窗口,event.srcElement才是那个BoxTop

13 楼zhongkeruanjian(编程亮子)回复于 2006-03-06 09:37:14 得分 0

parwin.document.all.DataGrid1__ctl8_realname.value  
   
  这个肯定是不能用的!DataGrid1的行和列是在不停的变化着的。根本无法确定正确的ID值Top

14 楼nameone(过客)回复于 2006-03-06 09:41:38 得分 0

用JS来传一下.Top

15 楼zhoujia1983(佳佳)回复于 2006-03-06 11:40:07 得分 0

谢谢编程亮子,这几天多麻烦你了,问题解决了。  
  借助你的思路,把成功后的代码贴一份:  
  function   StudentSelect()  
  {  
  var   ret;  
  var   obj   =   event.srcElement;  
  ret   =   window.showModalDialog("StudentSelect.aspx",obj,"dialogHeight:400px;dialogWidth:400px;center:Yes;Help:No;Resizable:No;Status:Yes;Scroll:auto;Status:no;");  
  if(ret   !=   null)  
  {  
          obj.value   =     ret;  
          }  
  }  
   
   
   
   
  function   confirmSelect1()  
  {  
  var   parwin   =   window.dialogArguments;  
  var   val=   document.all('student').value;  
  var   name   =   window.dialogArguments.name;  
  parwin.document.all(name).value=val;  
  window.close();  
  }  
   
   
  再次感谢各位的指教!!谢谢!Top

相关问题

  • 父子页面的联系问题。
  • DataGrid更新时取不到页面上TextBox的值,如何解决?
  • 页面元素之间有没有父子关系?
  • 一个在父子页面间传值的问题,急急急!
  • 一个简单的父子页面问题!!!
  • 如何将父页面的TextBox的Text传到子页面(弹出页面)?
  • 刷新父页面的datagrid
  • datagrid页面传值问题
  • A页面有个TEXTBOX,点击LINKBUTTON打开另一个页面B,同时把B页面的TEXTBOX的值传到另一页面,供这个页面使用;
  • 如何获取datagrid里面每一行对应的列的内容到另外一个页面的textbox中,谢谢各位大虾帮偶一下~!

关键词

  • datagrid
  • 模板
  • 客户
  • document
  • studentselect
  • parwin
  • realname
  • textbox
  • ret
  • showmodaldialog

得分解答快速导航

  • 帖主:zhoujia1983
  • zhongkeruanjian

相关链接

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

广告也精彩

反馈

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