读书人

ASP.net 子页面传递数据到父页面 求

发布时间: 2012-12-14 10:33:08 作者: rapoo

ASP.net 子页面传递数据到父页面 求好心人帮帮我 急!
父页面有个TextBox和button,通过按钮弹出子页面,子页面有个GridView,想通过双击GridView取出名称字段传递给TextBox1,并关闭子页面,但我双击GridView提示页面脚本出错

父页面text1.aspx:
<script type="text/javascript">

function Show()

{
var arrTemp = window.showModalDialog('test2.aspx', null, 'DialogWidth:400px;DialogHeight:350px');

//这是用来显示对话框的文本

document.getElementByid("<%=TextBox1.ClientID%>").value=arrTemp;

//通过此句我们可以获取从子页面传来的值并将它赋给txtGKCompanyID
}
</script>

<input id="GKCompanyID" type="button" value="..." onclick="Show()" style="width:30px"/>

子页面text2.aspx
<script type="text/javascript" language="javascript">
function doChoose(itemid)
{
window.parent.returnValue = itemid;

window.parent.close();
}
</script>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
onrowdatabound="GridView1_RowDataBound"
>
<Columns>
<asp:BoundField DataField="id" HeaderText="编号" />
<asp:TemplateField HeaderText="名称">
<ItemTemplate>
<asp:Label ID="lbCompanyID" runat="server" Text='<%# Bind("name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>

</Columns>
</asp:GridView>
后台代码:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string lbCompanyID = ((Label)(e.Row.FindControl("lbCompanyID"))).Text.Trim();
e.Row.Attributes.Add("ondblclick", "doChose('" + lbCompanyID + "');");

//通过最下面的一句可以将GridView添加双击的事件使其双击时调用前台的doChose的方法:
}


[解决办法]
可以试试用window.open做。
window.open("sUrl","sName","sFeature","bReplace");
刚好有个例子:
基础用法:
1.one.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="two.aspx.cs" Inherits="WebApplication1.two" %>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<script language="javascript" type="text/javascript">
function showItem() {
var win = window.open("two.aspx", null, " height=300,width=450, Left=300px,Top=20px, menubar=no,titlebar=no,scrollbar=no,toolbar=no, status=no,location=no");
}
</script>
<body>
<form id="form1" runat="server">
<div>
<input type="button" id="btnShow" onclick="showItem();" value="显示子窗体" />
<asp:TextBox ID="txt1" runat="server"></asp:TextBox>
<asp:TextBox ID="txt2" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>
2.two.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="two.aspx.cs" Inherits="WebApplication1.two" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<script language="javascript" type="text/javascript">
function check() {
window.opener.document.getElementById("txt1").value = '11';
window.opener.document.getElementById("txt2").value = '22';
window.close();
}
</script>
<body>
<form id="form1" runat="server">
<div>
<input type="button" id="btnSelect" onclick="check();" value="选择" />
</div>
</form>
</body>
</html>


借鉴这个的思路吧。
[解决办法]
你可以通过vs的javascript调试(设置断点)arrTemp 变量,或者写alert打印结果。

读书人网 >asp.net

热点推荐