查看: 694|回复: 11
|
frame 的问题
[复制链接]
|
|
小弟在left.aspx有一个search engine,让user enter area name & property type 来搜寻相关资料
现在当我按search button后,右边的page会变去 left.aspx
<form name=form1 action="result.aspx" method=post runat="server" target="center">
<asp:dropdownlist id=ddl_Pro_type runat="server" Width="136px"></asp: DropDownList>
<asp:button id=btn_Search runat="server" Text="Search"></asp:Button>
</FORM>
我的最终目的是当我按下search button后,右边的result.aspx会display query result...

[ 本帖最后由 counterking 于 1-6-2006 10:09 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 1-6-2006 11:40 PM
|
显示全部楼层
这里有个简单折衷的方法.
你的 left.aspx 什么都别做好了... 就只是 refresh.
在你的 left.aspx 的 code 里, 让你的 btn_Search 在 onclick 的时候执行以下的 javascript:
function PostSearch () {
// 这 window.frame1.location.url 也许写错了, 你需要去找找如何控制 frame 的 javascript, 但基本概念就是这样.
window.frame1.location.url = "result.aspx?area=" + document.forms[0].area.value + "&type" + document.forms[0].type.value;
} |
|
|
|
|
|
|
|

楼主 |
发表于 2-6-2006 12:50 AM
|
显示全部楼层
regarding to ur suggestion code.. do u think the following code is better?
http://www.pageresource.com/html/frame4.htm
meanwhile, why tis error message will come up will i combine javascript to asp.net??
subject to line 54
Compiler Error Message: BC30577: 'AddressOf' operand must be the name of a method; no parentheses are needed.
if i remove the the parentheses at line 54, another error msg will come up
Compiler Error Message: BC30408: Method 'Public Sub PostSearch()' does not have the same signature as delegate 'Delegate Sub EventHandler(sender As Object, e As System.EventArgs)'.
the following is my coding :
------------------------------------------------------------------------
line 54:
<asp:button id=btn_Search runat="server" Text="Search" onClick="postSearch();"></asp:button>
------------------------------------------------------------------------
<HEAD>
<script language="javascript">
function postSearch() {
parent.center.location="top.aspx";
}
</script>
</HEAD>
------------------------------------------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btn_Search.Attributes.Add("onClick", "return postSearch();")
End Sub
[ 本帖最后由 counterking 于 2-6-2006 01:16 AM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 2-6-2006 01:34 AM
|
显示全部楼层
why???
<script language="javascript">
function postSearch() {
parent.center.location="top.aspx" 可以运行!!
当我用下面的code时,出现error on page
parent.center.location="top.aspx?state=" + document.Form1.ddl_state[document.Form1.ddl_state.selectedIndex].value;
parent.center.location="top.aspx?area=" + document.Form1.txt_area.Text;
}
</script> |
|
|
|
|
|
|
|
发表于 2-6-2006 08:55 AM
|
显示全部楼层
原帖由 counterking 于 2-6-2006 01:34 AM 发表
why???
<script language="javascript">
function postSearch() {
parent.center.location="top.aspx" 可以运行!!
当我用下面的code时,出现error on page
parent. ...
为什么需要放两次 location? 一次就够了.
parent.center.location = "top.aspx?state=" + document.Form1.ddl_state[document.Form1.ddl_state.selectedIndex].value + "&area=" + document.Form1.txt_area.Text;
在你的 top.aspx 里, Page_Load 那里只需要用以下的 code 来取得数据就可以了.
if (Request.QueryString["area"] != null && Request.QueryString["state"] != null) {
// something...
} |
|
|
|
|
|
|
|

楼主 |
发表于 2-6-2006 10:31 AM
|
显示全部楼层
1) 其实我也只是放一行code而已,其它的我是想表达那一些code可以运行,那些不可以 
当我放以下的code时,按下link后出现error on page的信息
function postSearch() {
parent.center.location = "top.aspx?area=" + document.Form1.txt_area.Text;"
}
如果我这样写就没问题。。那里出错了?
function postSearch() {
parent.center.location = "top.aspx“}
2) 请看回第三贴,那个问题我到现在还是solve不到。。 为何呢? 我照住web reference 去做了....
Compiler Error Message: BC30456: 'postSearch' is not a member of 'ASP.left_aspx'.
<home>
<script language="javascript">
function postSearch() {
parent.center.location = "top.aspx"
}
</script>
</home>
-------------------------------------------------------------------------
<form name=form1 method=post runat="server">
<asp:button id=btn_Search runat="server" Text="Search"
OnClick="postSearch();">
</asp:button></FORM>
------------------------------------------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btn_Search.Attributes.Add("onClick", "return postSearch();" )
End Sub
[ 本帖最后由 counterking 于 2-6-2006 10:35 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 2-6-2006 12:06 PM
|
显示全部楼层
原帖由 counterking 于 2-6-2006 10:31 AM 发表
1) 其实我也只是放一行code而已,其它的我是想表达那一些code可以运行,那些不可以 
当我放以下的code时,按下link后出现error on page的信息
function postSearch() {
parent.center.location = " ...
应该这样写:
function postSearch() {
parent.center.location = "top.aspx?area=" + document.Form1.txt_area.Text;"
return false;
}
然后:
<asp:button id=btn_Search runat="server" Text="Search" />
然后在你的 Page_Load 里, 照旧放这个:
btn_Search.Attributes.Add("onClick", "return postSearch();" ) |
|
|
|
|
|
|
|

楼主 |
发表于 2-6-2006 01:07 PM
|
显示全部楼层
error on page还是出现
function postSearch() {
parent.center.location = "top.aspx?area=" + document.Form1.txt_area.Text;"
return false;
}
注意! 我已经把
parent.center.location = "top.aspx?area=" + document.Form1.txt_area.Text;"
改去了
parent.center.location = "top.aspx?area=" + document.Form1.txt_area.Text; |
|
|
|
|
|
|
|
发表于 2-6-2006 01:12 PM
|
显示全部楼层
1. Error page 还是一样吗?
2. Error page 是指 left.aspx 还是 top.aspx?
3. 两个都有 error 吗?
4. 有没有写成这样: <asp:button id=btn_Search runat="server" Text="Search" /> |
|
|
|
|
|
|
|

楼主 |
发表于 2-6-2006 03:49 PM
|
显示全部楼层
我发觉如果我这样写,就不会显示error on page的信息,一切运行ok
parent.center.location = "top.aspx?area=cheras"
但如果我这样写
parent.center.location = "top.aspx?area=" + document.Form1.txt_area.Text
或者是
parent.center.location = "top.aspx?area=" + document.Form1.txt_area.Text;
或者是
parent.center.location = "top.aspx?state=" + document.Form1.ddl_state[document.Form1.ddl_state.selectedIndex].value
就不可以运行了....
[ 本帖最后由 counterking 于 3-6-2006 02:44 PM 编辑 ] |
|
|
|
|
|
|
|

楼主 |
发表于 4-6-2006 04:09 PM
|
显示全部楼层
1) 我所指的error on page 是displayed on the status bar of IE
2)在 left.aspx
3) left.aspx而已
4) 对啊,就是写成这样 <asp:button id="btn_Search" runat="server" Text="Search">
-------------------------------------------------------------------------------
<script language=javascript>
function postSearch()
{
parent.center.location = "top.aspx?area=" + document.Form1.txt_area.Text;
}
</script>
加了蓝色那行后,一按search button, "error on page"的字就会出现在IE的staus bar,朋友说是js error..
如果只是放 parent.center.location = "top.aspx?area=cheras" 就没事
-------------------------------------------------------------------------------
<form name="form1" method="post" runat="server">
<asp:textbox id="txt_area" runat="server"></asp:textbox>
<asp:dropdownlist id="ddl_State" runat="server"></asp:dropdownlist>
<asp:button id="btn_Search" runat="server" Text="Search"></asp:button>
</form>
------------------------------------------------------------------------------
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btn_Search.Attributes.Add("onClick", "return postSearch();")
End Sub
[ 本帖最后由 counterking 于 4-6-2006 04:33 PM 编辑 ] |
|
|
|
|
|
|
|
发表于 5-6-2006 09:25 AM
|
显示全部楼层
我建议一个方法, 就是把你在 left.aspx 的 button 弄成 asp.net 看不见的 button.
首先这样写:
<input type="button" id="btn_Search" name="btn_Search" value="Search" onClick="postSearch();">
然后, 在你的 code 里, 把这行移掉, 因为你的 code 不再有 btn_Search:
btn_Search.Attributes.Add("onClick", "return postSearch();")
然后在你的 javascript, 里, 改成这样:
<script language=javascript>
function postSearch()
{
// javascript 对名字的大小写很在意的, 你的 Form1 和 form1 是完全不同的.
// javascript 的 textbox element 的 property 是 value, 不是 Text
parent.center.location = "top.aspx?area=" + document.forms[0].txt_area.value;
}
</script>
我建议你在处理这些问题上, 你需要灵活看待各样的 code, 多参考 manual, 别太在意书本的指示. |
|
|
|
|
|
|
| |
本周最热论坛帖子
|