index.aspx我发的是全部代码阿, ab.aspx是: sub subbutton_Click session("name") = textbox1.text end sub ac.aspx: Sub Page_Load textbox2.text = session("name") end sub 谢谢!
如果控件都是WEB控件,用SESSION还行,若是客户端的可以在客户端写事件 SUB BUTTON1—ONCLICK() Window.Parent.frame("left").text2.innertext=text1.innertext END SUB如TEXT1是WEB控件,可以让SESSION等于其直,再放一个隐藏的DIV ID="A",让它=SESSION 然后就可以引用了。
ab.aspx代码这样写: sub subbutton_Click RegisterStartupScript("setValue","<script language='javascript'>parent.frame[1].Text1.value=parent.frame[0].Text2.value;</script>") end sub试试,如果报脚本错误,可以检查各元素名称是否正确。
ab.aspx是:
sub subbutton_Click
session("name") = textbox1.text
end sub
ac.aspx:
Sub Page_Load
textbox2.text = session("name")
end sub
谢谢!
parent.frame[1].Text1.value=parent.frame[0].Text2.Text
这一段代码用session好像挺麻烦的,ac.aspx和ab.aspx是同时出现在页面上的,在ac.aspx的page_load事件中,Session还没有值。在单击ab.aspx之后,才对Session赋值,但这是你需要再次触发ac.aspx的page_load事件,才能得到session值,逻辑上有点混乱。建议用javascript简单明了。
SUB BUTTON1—ONCLICK()
Window.Parent.frame("left").text2.innertext=text1.innertext
END SUB如TEXT1是WEB控件,可以让SESSION等于其直,再放一个隐藏的DIV ID="A",让它=SESSION
然后就可以引用了。
index.aspx:
<HTML>
<frameset cols="293,*" frameborder="0" framespacing="5" runat="server" ID="Frameset1">
<frame id="ab" name="ab" src="ab.aspx">
<frame id ="ac" name="ac" src="ac.aspx">
<frame noresize>
</frameset>
</HTML>
ab.aspx
<HTML>
<BODY>
<asp:textbox id="textbox1" runat="server" ></asp:textbox>
<asp:button id="subButton" runat="server" ></asp:button>
</BODY>
</HTML>
ac.aspx
<HTML>
<BODY>
<asp:textbox id="textbox2" runat="server" ></asp:textbox>
</BODY>
</HTML>
用session是出现了你所说的问题,要再次触发ac.aspx才能取到值。
我一般用vb写的
你能不能用javascript帮我写的详细一点
sub subbutton_Click
RegisterStartupScript("setValue","<script language='javascript'>parent.frame[1].Text1.value=parent.frame[0].Text2.value;</script>")
end sub试试,如果报脚本错误,可以检查各元素名称是否正确。
RegisterStartupScript("setValue","<script language='javascript'>parent.ab.document.all.Text1.value=parent.ac.document.all.Text2.value;</script>")
parent.frame[1]是Null
什么原因?
parent.ab.document是Null
不过你给的代码变量也太混乱了,我只有照着你的重写一个实例:
index.html
<HTML>
<frameset cols="293,*" frameborder="0" framespacing="5" runat="server" ID="Frameset1">
<frame id="ab" name="ab" src="ab.aspx">
<frame id ="ac" name="ac" src="ac.aspx">
<frame noresize>
</frameset>
</HTML>
ab.aspx<%@ Page language="c#" Codebehind="ab.aspx.cs" AutoEventWireup="false" Inherits="demo.Test.ab" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<script language='javascript'>
function setValue()
{ parent.ac.document.all.textbox2.value=document.all.textbox1.value;
}
</script><HTML>
<BODY>
<form runat="server" id="form1">
<asp:textbox id="textbox1" runat="server"></asp:textbox>
<asp:button id="subButton" runat="server" Text="Set"></asp:button>
</form>
</BODY>
</HTML>
后台代码:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace demo.Test
{
public class ab : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox textbox1;
protected System.Web.UI.WebControls.Button subButton; #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.subButton.Click += new System.EventHandler(this.subButton_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void subButton_Click(object sender, System.EventArgs e)
{
RegisterStartupScript("setValue","<script>setValue();alert('ok');</script>");
}
}
}
ac.aspx
<HTML>
<BODY>
<form runat="server" id="frm2">
<asp:textbox id="textbox2" runat="server"></asp:textbox>
</form>
</BODY>
</HTML>
测试通过!
this.Load += new System.EventHandler(this.Page_Load);去掉!
我一般都用vb来写,难道哪里设置有错么?
这样用c#就出错了
然后双击那个set按钮,在自动生成的后台代码里写:
RegisterStartupScript("setValue", "<script>setValue();alert('ok');</script>")
其他的页面都不变,一切OK。
非常感谢,这个问题郁闷了我好多天了
我一直用vb,没想到用javascript来解决