第一个页面
<script language="javascript" charset="gb2312">
function searchvalue()
{
var sql="select * from companyjob";
document.all.Form1.label.value=sql;
var url="person/jobsearchresult.aspx";
window.open(url,'_blank');
}
</script>
这个意思是把var sql的值放到label里,然后打开一个新页面,然后在新页面里,我怎么得到这个label值?
if(!IsPostBack)
{//怎么得到上个页面label的值?
}
<script language="javascript" charset="gb2312">
function searchvalue()
{
var sql="select * from companyjob";
document.all.Form1.label.value=sql;
var url="person/jobsearchresult.aspx";
window.open(url,'_blank');
}
</script>
这个意思是把var sql的值放到label里,然后打开一个新页面,然后在新页面里,我怎么得到这个label值?
if(!IsPostBack)
{//怎么得到上个页面label的值?
}
用session把,也不行,因为javascript好像没有发现session呢怎么解决?
aspx各个页面之间可以互相读取web控件的值
因为是这个sql语句的where后面的值是从html控件里取得的,html控件值是用javascript填充的,所以如果不在这里那只有再用个隐藏控件,也比较麻烦的所以用客户端操作然后直接把sql传过去应该是最简单的了aspx各个页面之间可以互相读取web控件的值
你给个简单例子,兄弟
ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式。然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过POST方法很容易的把一个值或多个值从一个页面传送到另一个页面,用同样的方法在ASP.NET中实现有点麻烦。在这里,我们可以通过其他方式来解决这种情形。ASP.NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应的值,再一种是通过session变量来传送相应的值,还有就是通过Server.Transfer方法来实现。下面分别一一介绍:
一、使用Querystring
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");
}
运行,即可看到传递后的结果了。
三、使用Server.Transfer
虽然这种方法有点复杂,但也不失为一种在页面传值的方式。
举个例子看看:
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;}上面的东西是copy来的,上面的第三种方法就是
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vbcon/html/vbtskpassingvaluesbetweenwebformspages.asp
就是因为父页是html控件,我怎么把这个值传递到新打开的页面中?1,我想通过javascript传递,但是javascript传递要通过?传递字符串,暴露在外面了2 我想用session,但是由于是要打开新页面,而且要点击时写session的,所以我的button按钮必须是服务器控件,问题是先执行的js打开页面,然后才写的session,所以问题就是我的session总是慢了一点
比如我第一页选择的是北京,那么点击按钮是显示正确的,然后我关闭调新页,重新选择,选择上海,在点击按钮打开,这时候还是北京,只有我关掉再打开,才是上海,因为在服务器事件里写window.open,父页面会刷新的,所以我必须用js,这样默认的就是先执行js,才执行服务器事件 3 我想通过一个隐藏域来传递,但是第二个页面好像没有办法接收高手帮忙,问题的就是我怎么把客户选择的html的值传递到新打开的页面而不用”?“方式?
可以解决这个问题吧?你要什么样效果呢?
你是不是要用js实现两个页面值互访,而且又不用url?
所以就出来了刚才的问题,这几个值我怎么传递到新页面中去?
1.html:
<form name="test">
<input id="guest">
<input type="button" value="open" onclick="javascript:window.open('2.html')">
</form>
2.html:
<form>
<select id="AA" onchange="javascript:opener.test.guest.value=document.all.AA.value;window.close()">
<option value="first">first</option>
<option value="2">second</option>
<option value="third">third</option>
</select>
</form>
是不是和你的要求相似!
1.在新打开的窗口中,先用脚本获取父页面的值并且写入该页面某个控件里面,完成之后,自动提交,此时你在服务器端就可以得到父页面的条件了.
2.先打开子窗口,待子窗口加载完毕后,从父窗口中用脚本向子窗口的某个控件写父窗口中选择的条件值,然后由父窗口命令子窗口提交页面
方法2与方法1是相同的,只不过一个是在子页面取得值,一个是由父页面控制而已.
子页面取父页面值的脚本子页面控件.value = parent.document.all("xxx").value;
document.Form1.submit();
<input type=hidden name="query">
</form><script language="javascript">
function searchvalue()
{
var sql="select * from companyjob";
document.all.form2.query.value=sql;
document.all.form2.action="person/jobsearchresult.aspx";
document.all.form2.submit();
}
</script>in your aspx, use Request.Form["query"]
页面的其他代码还要面向对象呢,所以这个大的是不能去的啊
为什么要传递整个SQL呢????
SQL可以更具参数在新的页面生成阿.另外,如果非要这样的话,可以参考window.open的传值方式,在另一个页面的Javascript脚本中定义Page_onLoad事件中利用opener对象接受该argument并存放至一Hidden中,在后台的Page_Load事件中访问该Hiden值。
新页面Load的顺序是先执行JS端的Page_onLoad事件再执行后台代码的。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>main</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language="javascript" charset="gb2312">
function searchvalue()
{
var sql="select * from companyjob";
SetCookie("SendSql",sql);
var url="child.aspx";
window.open(url,'_blank');
}
function SetCookie(name, value)
{
document.cookie = name + "=" + value;
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" >
<form id="Form1" method="post" runat="server">
<INPUT id="Hidden1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" type="hidden"
name="Hidden1" runat="server"><INPUT style="Z-INDEX: 102; LEFT: 96px; POSITION: absolute; TOP: 144px" type="button" onclick="searchvalue();"
value="Open" id="Button1" name="Button1">
<asp:Button id="Button2" style="Z-INDEX: 103; LEFT: 256px; POSITION: absolute; TOP: 152px" runat="server"
Text="Button"></asp:Button>
</form>
</body>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>child</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language =javascript >
function getv()
{
alert(document.forms("Hidden1"));
document.all("Hidden1").value=document.forms("Hidden1");
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" >
<form id="Form1" method="post" runat="server">
<INPUT style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" type="hidden" id="Hidden1"
name="Hidden1" runat="server"></FONT>
</form>
</body>
</HTML>
.vb文件
If Not IsPostBack Then
'Response.Write(Request.Form("Hidden1"))
Dim cookie As HttpCookie = Request.Cookies("SendSql")
If Not cookie Is Nothing Then
Response.Write(cookie.Value)
End If
End If
<form id=anthorform>
..
</form>you just need to copy the controls valuesor you know what, just use one form, but dovar a = document.forms[0].action;
var t = document.forms[0].target;
...document.forms[0].action = '....';
document.forms[0].target = '_blank';
document.forms[0].submit();
document.forms[0].action = a;
document.forms[0].target = t;