- - PR -
フレームを使った検索
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-12-09 23:41
Jitta様、お忙しい中お力添えをいただきまことに感謝いたします。
少し進展いたしました。 しかし、script.Append("<script language=""JavaScript"">")のところの記述がいまいちよくわかりません。""の区切りはどうしてこのようになっているのでしょうか? やはり、デバックさせてみると、"JavaScript"">")の部分に下線が付き、)が足りない等等エラーが出てきます。 ""の位置等変えたりしても、うまくいかず、エラーどおりに()をつけたりしても動作しません。 重ね重ね恐縮ですが、ヒントをいただけないでしょうか? 私自身ももう一度ちゃんと調べてみます。 | ||||
|
投稿日時: 2003-12-10 08:43
にしおさんはC#ですね。文字列はダブルクォーテーションで囲みますよね。では、文字列の中にダブルクォーテーションを含む場合は?C#では「\"」と、エスケープさせますが、VB.NETでは「""」と、2つ重ねます。ですから、「script.Append("<script language=\"JavaScript\">");」としてください。 | ||||
|
投稿日時: 2003-12-10 14:03
Jitta様ありがとうございます。これでコードのエラーはなくなりました。
現状は framesetのHTML部分 left画面:<frame name="left" src="left.aspx" scrolling="no" noResize> main画面:<frame name="main" src=""> となっていて、 leftのHTML部分 <title>WebForm1</title> <meta content="Microsoft Visual Studio 7.0" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> <BASE target="main"> mainのHTML部分 <title>main</title> <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> となっています。 left部分の認証処理をするボタンには、 private void btn_login_Click(object sender, System.EventArgs e) { SelCmd_left.Parameters.Add("会員ID",OleDbType.VarWChar); SelCmd_left.Parameters.Add("パスワード",OleDbType.VarWChar); SelCmd_left.Parameters["会員ID"].Value=txt_id.Text; SelCmd_left.Parameters["パスワード"].Value=txt_pwd.Text; SelCmd_left.Connection.Open(); OleDbDataReader dr=SelCmd_left.ExecuteReader(); if (dr.Read()) { System.Text.StringBuilder script=new System.Text.StringBuilder(); script.Append("<script language=\"JavaScript\">"); script.Append("window.open('MainMenu.aspx', 'main');"); script.Append("</script>"); Page.RegisterStartupScript ("authenticated", script.ToString()); Response.Redirect("mainmenu.aspx"); } else { lbl_alarm.Text="IDとPasswardが<br>間違っています"; txt_id.Text=""; } dr.Close(); SelCmd_left.Connection.Close(); } というコードを記述してあります。 これで認証を行うと、認証が正しい場合はmainの方にメニュー画面が表示されますが、正しくないときは、それもまたmain画面にlbl_alarm.Textが表示された状態で、left画面のleft.aspxが表示されてしまいます。 どこがいけないのでしょうか? そして、もしできるのであれば、現状では最初にframesetのmain部分のsrcを=""にしているので、何も表示されていませんが、そこにmain.aspxという初期画面を表示させておきたいのです。そして認証が通ればmain部分にmenu.aspxというものを表示しleft部分の認証処理に使用したラベルやテキストボックスを非表示に、通らなければmain部分はそのままmenu.aspxが表示されていて、left部分にIDとPASSWARDが違いますというようなメッセージを出したいと思っているのです。 可能でしょうか? どうか、お力を貸していただけると幸いです。 よろしくお願いいたします。 [ メッセージ編集済み 編集者: にしお 編集日時 2003-12-10 14:04 ] | ||||
|
投稿日時: 2003-12-10 14:16
HTMLを、どこまで理解されていますか?
『leftのHTML部分』にある、『<BASE target="main">』は、「ここで行うことの“結果”は"main"という名前のウインドウに行いなさい」ということです。(再読込という結果があることに注意) また、JavaScriptで書いた『window.open()』の第2引数も、「この名前のウインドウに対して行いなさい」という指定です。 正しいときは、上書きされてしまってわからないのですが、leftのページが、実は表示されているのです。 これで、どこをどう直せばいいか、わかります? これが解決すれば、『そして、もしできるのであれば、(以下略)』も解決しますよね。 | ||||
|
投稿日時: 2003-12-10 15:39
なんとなく理解できた気がします。
今は自宅ではないので実行できませんが、帰宅し次第早速やってみます!! 多大なヒントありがとうございました!! [ メッセージ編集済み 編集者: にしお 編集日時 2003-12-10 15:40 ] |