- PR -

フレームを使った検索

投稿者投稿内容
にしお
常連さん
会議室デビュー日: 2003/12/01
投稿数: 44
投稿日時: 2003-12-09 23:41
Jitta様、お忙しい中お力添えをいただきまことに感謝いたします。
少し進展いたしました。
しかし、script.Append("<script language=""JavaScript"">")のところの記述がいまいちよくわかりません。""の区切りはどうしてこのようになっているのでしょうか?
やはり、デバックさせてみると、"JavaScript"">")の部分に下線が付き、)が足りない等等エラーが出てきます。
""の位置等変えたりしても、うまくいかず、エラーどおりに()をつけたりしても動作しません。
重ね重ね恐縮ですが、ヒントをいただけないでしょうか?
私自身ももう一度ちゃんと調べてみます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-10 08:43
引用:

にしおさんの書き込み (2003-12-09 23:41) より:

しかし、script.Append("<script language=""JavaScript"">")のところの記述がいまいちよくわかりません。""の区切りはどうしてこのようになっているのでしょうか?


 にしおさんはC#ですね。文字列はダブルクォーテーションで囲みますよね。では、文字列の中にダブルクォーテーションを含む場合は?C#では「\"」と、エスケープさせますが、VB.NETでは「""」と、2つ重ねます。ですから、「script.Append("<script language=\"JavaScript\">");」としてください。
にしお
常連さん
会議室デビュー日: 2003/12/01
投稿数: 44
投稿日時: 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 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-10 14:16
 HTMLを、どこまで理解されていますか?

 『leftのHTML部分』にある、『<BASE target="main">』は、「ここで行うことの“結果”は"main"という名前のウインドウに行いなさい」ということです。(再読込という結果があることに注意)
 また、JavaScriptで書いた『window.open()』の第2引数も、「この名前のウインドウに対して行いなさい」という指定です。

 正しいときは、上書きされてしまってわからないのですが、leftのページが、実は表示されているのです。

 これで、どこをどう直せばいいか、わかります?


 これが解決すれば、『そして、もしできるのであれば、(以下略)』も解決しますよね。
にしお
常連さん
会議室デビュー日: 2003/12/01
投稿数: 44
投稿日時: 2003-12-10 15:39
なんとなく理解できた気がします。
今は自宅ではないので実行できませんが、帰宅し次第早速やってみます!!
多大なヒントありがとうございました!!


[ メッセージ編集済み 編集者: にしお 編集日時 2003-12-10 15:40 ]

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