datagrid中textbox的父子页面传值问题
一个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> </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> </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>
学员编号为:<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




