asp.net:两个页面间的数据传递 我想实现这样一个功能:有一个1.aspx的页面,包含几个textbox的web控件和一个链接,当我点击链接就打开一个新的页面,在这个新的页面中有一个datagrid控件来显示数据,如果把这个datagrid控件的第一列设成一个超链接,那么当我点击其中的某一个链接后,怎么才能把我所点的那一行的相关数据取出传回到1.aspx中的textbox控件中去。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <asp:HyperLinkColumn DataNavigateUrlField="id" DataNavigateUrlFormatString="AddStore.aspx?StoreId={0}&Flag=0" DataTextField="StoreName" HeaderText="小店名称"></asp:HyperLinkColumn> Response.Write("<script>opener.document.getElementById('txtSourceNo').value='" & GridDetail.Items(e.Item.ItemIndex).Cells(1).Text & "';opener.document.getElementById('txtSourceNo').onchange() </script>")差不多就是这样吧 一、使用QuerystringQuerystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象。如果你想传递一个安全性不是那么太重要或者是一个简单的数值时,用此方法最好不过了。下面通过一个小例子来完成传值工作,步骤如下:1、创建一个web form2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2 3、为button按钮创建click事件代码如下:private void Button1_Click(object sender, System.EventArgs e){ string url; url="webform2.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; Response.Redirect(url);}4、新建一个目标页面命名为webform25、在webform2中放置两个Label1,Label2在webform2的Page_Load中添加如下代码:private void Page_Load(object sender, System.EventArgs e){ Label1.Text=Request.QueryString["name"]; Label2.Text=Request.QueryString["email"];}运行,即可看到传递后的结果了。二、使用Session变量使用Session变量传值是一种最常见的方式了,此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失。举个例子看看:1、创建一个web form2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2 3、为button按钮创建click事件代码如下:private void Button1_Click(object sender, System.EventArgs e){ Session["name"]=TextBox1.Text; Session["email"]=TextBox2.Text; Response.Redirect("webform2.aspx");}4、新建一个目标页面命名为webform25、在webform2中放置两个Label1,Label2在webform2的Page_Load中添加如下代码:private void Page_Load(object sender, System.EventArgs e){ Label1.Text=Session["name"].ToString(); Label2.Text=Session["email"].ToString(); Session.Remove("name"); Session.Remove("email");}运行,即可看到传递后的结果了。 三、使用Server.Transfer虽然这种方法有点复杂,但也不失为一种在页面传值的方式。举个例子看看:1、创建一个web form2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2 3、为button按钮创建click事件代码如下:private void Button1_Click(object sender, System.EventArgs e){ Server.Transfer("webform2.aspx");}4、创建过程来返回TextBox1,TextBox2控件的值代码如下:public string Name{ get { return TextBox1.Text; }}public string EMail{ get { return TextBox2.Text; }}5、新建一个目标页面命名为webform26、在webform2中放置两个Label1,Label2在webform2的Page_Load中添加如下代码:private void Page_Load(object sender, System.EventArgs e){ //创建原始窗体的实例 WebForm1 wf1; //获得实例化的句柄 wf1=(WebForm1)Context.Handler; Label1.Text=wf1.Name; Label2.Text=wf1.EMail;} 楼上的好像都不符合楼主的要求楼主好像要求两个页面同时存在(打开)的情况下传值我觉的只能是采用父子页面(window.open打开新页面)+js进行操作了window.parent.控件名称 0.先给datagrid添加一个ItemCommand事件1.获取datagrid里面的值,用datagrid.Items[x].Cells[y]来获取2.将获取回来的值保存在Session里面,用Session.Add来保存。或者通过URL参数传递给目标页面,在目标页面用Request.QueryString来获取。3.将Session里面的值或者Request.QueryString获取的值赋值给相应的控件 是啊,如果要达到要求的话,得在javascript中打开一个模式窗口,好像是用window.showmodeldialog返回一个值之后,再在脚本中给父页面的textbox赋值 sorry没注意,你要两个页面同时打开时传值在则必须在1.aspx里面开启一个监听进程,在新页面出发事件获取相应的值后,对监听的端口发送时间代码和数据,进程监听到数据后获取数据,刷新页面重新绑定,应该可以。要么参考聊天室的做法,可以做到无刷新~ xueqs() 正解,那位写了一大段的朋友辛苦了,楼主还是仔细研究下xueqs()的说法 xueqs() ,能讲得详细一点吗 NetCode(灵光) 说得不无道理。在1.aspx里面开启一个监听进程,在新页面出发事件获取相应的值后,对监听的端口发送时间代码和数据,进程监听到数据后获取数据,刷新页面重新绑定。我想,楼主要实现的想法应该要这样做才行。xueqs()的三种方法概述了页面间的数据传递,但是的确不符合楼主的要求。 请问asp.net做EMS打印怎么做 .net上传图片时,如何使选完图片路径后,图片就能立刻显示到图片显示框中 把一个站点嵌入iframe里提示ASP.NET已过期 .net连接mysql数据库,用过的进来说下! gridview 传值的问题 指针问题,请教大家 自定义验证控件 关于cookies的安全问题 我如何用js能取到asp:dropdownlist的text,而不是value? 用vs.net时,作一个窗口就有好多文件,能不能设成只有一个文件? 如何连接两个同构的DataTable?? 如何用脚本控制实现DataGrid一行中的控件联动
DataTextField="StoreName" HeaderText="小店名称"></asp:HyperLinkColumn>
差不多就是这样吧
Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象。如果你想传递一个安全性不是那么太重要或者是一个简单的数值时,用此方法最好不过了。下面通过一个小例子来完成传值工作,步骤如下:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="webform2.aspx?name=" +
TextBox1.Text + "&email=" +
TextBox2.Text;
Response.Redirect(url);
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
运行,即可看到传递后的结果了。
二、使用Session变量
使用Session变量传值是一种最常见的方式了,此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失。举个例子看看:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}
运行,即可看到传递后的结果了。
虽然这种方法有点复杂,但也不失为一种在页面传值的方式。
举个例子看看:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("webform2.aspx");
}
4、创建过程来返回TextBox1,TextBox2控件的值代码如下:
public string Name
{
get
{
return TextBox1.Text;
}
}
public string EMail
{
get
{
return TextBox2.Text;
}
}
5、新建一个目标页面命名为webform2
6、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load
(object sender, System.EventArgs e)
{ //创建原始窗体的实例
WebForm1 wf1;
//获得实例化的句柄
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;}
楼主好像要求两个页面同时存在(打开)的情况下传值我觉的只能是采用父子页面(window.open打开新页面)+js进行操作了window.parent.控件名称
1.获取datagrid里面的值,用datagrid.Items[x].Cells[y]来获取
2.将获取回来的值保存在Session里面,用Session.Add来保存。或者通过URL参数传递给目标页面,在目标页面用Request.QueryString来获取。
3.将Session里面的值或者Request.QueryString获取的值赋值给相应的控件
返回一个值之后,再在脚本中给父页面的textbox赋值
要么参考聊天室的做法,可以做到无刷新~
在1.aspx里面开启一个监听进程,在新页面出发事件获取相应的值后,对监听的端口发送时间代码和数据,进程监听到数据后获取数据,刷新页面重新绑定。
我想,楼主要实现的想法应该要这样做才行。
xueqs()的三种方法概述了页面间的数据传递,但是的确不符合楼主的要求。