- PR -

フレームを使った検索

投稿者投稿内容
ハルカイ
会議室デビュー日: 2003/03/24
投稿数: 9
お住まい・勤務地: 東京都
投稿日時: 2003-11-20 17:54
はじめまして。ASP.NETの初心者です。フレームセットを使用した検索システムの実現方法がわからないので、投稿させて頂きます。

上下分割のフレームにて、上フォームをA.aspx、下フォームをB.aspxとした場合に、A.aspxに検索ボタンがあり、B.aspxに検索条件入力フィールドが複数(10〜20)あります。このようなとき、A.aspxの検索ボタンを押下時に、B.aspxに入力された条件で検索し検索結果画面(C.aspx)に遷移するという方法を実現したいと思っております。

過去のスレッドより、検索ボタンと同じフォームに検索条件入力フィールドがある場合などの情報は入手できたのですが、上記のような場合の方法がどうしてもわかりません。

何卒宜しくお願い致します。
たるたる
会議室デビュー日: 2003/09/29
投稿数: 16
投稿日時: 2003-11-20 19:31
JavaScript を使えば可能です。

A.aspxのボタン押下時に下記JavaScriptを実行させるとで
他フレームのフォームをSubmitすることができます。

parent.フレーム名.フォーム名.submit();


Submitされるformのtargetには、出力するフレーム名を記述しておいてください。

<form name="フォーム名" method="post" target="出力フレーム名" action="〜">

</form>
ハルカイ
会議室デビュー日: 2003/03/24
投稿数: 9
お住まい・勤務地: 東京都
投稿日時: 2003-11-20 19:49
実現できました(感動!!!)。

誠に有難う御座いました。

また何か御座いましたら宜しくお願いします。
にしお
常連さん
会議室デビュー日: 2003/12/01
投稿数: 44
投稿日時: 2003-12-08 07:22
フォームで、
【上部】
検索画面(テキストボックス2つとイメージボタン1つ)・ボタン3つ
【下部】
メイン画面
となっています。
最初に上部の3つのボタンは1つ以外はvisible=falseになっています。
その1つだけ見えているボタンを押すと、下部にその情報が表示されます。
もし検索画面で、IDとパスワードをテキストボックスに記入し、イメージボタンを押すと、もしそのIDとパスワードがデータベースに登録してあるものに一致したら、上部のvisible=falseになっている2つのボタンを、trueにしたいと思っています。
普通にすべて、ボタンを押したら下部に情報を表示するだけなら、HTML部分のHEADにTARGETで下部を指定すればいいのですが、IDとPASS一致したら上部のフォーム自身のボタンを表示させたいので
btn_serch.Attributes["OnClick"]="document.Form1.target='head.aspx'";
という風にやってから、処理を書いたのですが、変わらずボタンの表示された上部の画面が下部に表示されてしまいます。
どうやれば場合わけができるのでしょうか?過去ログ等々みたのですが、よくわからなくて、投稿させていただきました。
長々と書いてしまいましたが、よろしくお願いいたします。
というか、返信用のところに掲載してしまってすいません。

[ メッセージ編集済み 編集者: にしお 編集日時 2003-12-08 07:23 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-08 15:11
> 最初に上部の3つのボタンは1つ以外はvisible=falseになっています。

 Visible=Falseにしていると、ソースがはき出されません(HTMLにないため)。よって、いったんサーバに戻してVisible=Trueにしなければなりません。

 検索画面で、メイン画面を移動させるスクリプトを登録するようにしては如何ですか。

if (一致条件) {
// 一致した場合
ボタンを見えるようにする処理
page.RegisterStartupScript.Add("DisplayImage", "<script>window.open('URL', 'メイン画面のフレーム名');</script>");
} else {
// 一致しなかった場合
}
#JavaScriptは詳しくないので、window.open以外の適切なものがあるなら、それで
にしお
常連さん
会議室デビュー日: 2003/12/01
投稿数: 44
投稿日時: 2003-12-08 18:47
'System.Web.UI.Page.RegisterStartupScript(string, string)' は 'メソッド' を意味しますが、このコンテキストでは無効です。
上記のコードを拝借し、コーディングしてみたのですが、上のエラーが出ました。
何を意味するかさっぱりわかりません…。
いろいろ調べてみます。
Jitta様ありがとうございました。
にしお
常連さん
会議室デビュー日: 2003/12/01
投稿数: 44
投稿日時: 2003-12-09 05:11
にしおです。
度々懲りずに申し訳ありません。どうしてもこの処理が行いたいので質問させてください。
フレームセットでleftとmainに分かれていて、
left部分
ラベル1つ(lbl_alarm)
テキストボックス2つ(txt_id,txt_pass)
ボタン1つ(btn_login)
が配置されていて、テキストボックスにそれぞれIDとPasswardを入力し、ボタンを押すと、main部分にmainmenu.aspxが表示されるようにしたかったので、BASE TARGET="main"とleft画面のほうに書きました。
しかし、ログインに失敗したときmain画面はそのままに、left側の部分にラベルでIDとパスワードが間違っていますと出したいのです。
現状で行うと、当然main部分にleft部分の画面が表示されてしまいます。
javascriptをいろいろ調べてみたのですが、よく理解できません。
Jitta様の物もやってみたのですが、うまくいきません。
どうか皆様、ヒント等何でもよろしいのでお力添えをいただきたいと思います。
どうかよろしくお願いいたします。



[ メッセージ編集済み 編集者: にしお 編集日時 2003-12-09 05:11 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-09 13:21
サービス(VB.NETなのは、愛嬌)

frameset1.htm:抜粋
<frameset cols="150,*">
<frame name="contents" src="WebForm1.aspx">
<frame name="main" src="">
<noframes>

WebForm1.aspx.vb:抜粋
If TextBox1.Text = "test" AndAlso TextBox2.Text = "pass" Then
Dim script As New System.Text.StringBuilder
script.Append("<script language=""JavaScript"">")
script.Append("window.open('MainMenu.aspx', 'main');")
script.Append("</script>")
Page.RegisterStartupScript("authenticated", script.ToString)
Else
Label2.Text = "違います(test/pass)"
End If

スキルアップ/キャリアアップ(JOB@IT)