- PR -

子画面、session変数

投稿者投稿内容
聖人@SKB
ベテラン
会議室デビュー日: 2003/03/26
投稿数: 58
お住まい・勤務地: 横浜(MM21)勤務の筈だがいつも顧客先常駐
投稿日時: 2004-11-12 14:25
たつごろーさんも仰っているのですが、
gSetボタンのonClickを他の個所で記述していませんか?

gSet_Clickメソッドの中で自身のonClickを追加しているようですが、
これでは、一度目のgSetボタンクリック時にはset.aspxは表示されず、
二度目のgSetボタンクリック時にset.aspxは表示されます。

一度目のgSetボタンクリック時にset.aspxが表示される場合、
gSet_Clickメソッド以外で
「gSet.Attributes.Add("onClick", "window.open('set.aspx');") 」
と同様のことを行っていることが考えられます。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-11-12 14:52
こんな動きではありませんか?

(1)テキストボックスに"1"を入力してボタンクリックしても何もおきない。
(2)テキストボックスに"2"を入力してボタンクリックすると子画面が開き、値が表示されない。
(3)テキストボックスに"3"を入力してボタンクリックすると子画面が開き、"2"が表示される。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-11-12 15:16
gSet_Clickイベントにて
---
 Me.RegisterStartupScript("Startup", "<script language=JavaScript>window.open('set.aspx');</script>")
---
とすれば、1回のボタン押下のみで呼び出されるようになるでしょう。
※但しボタン押下後、親画面にてブラウザのリロードを行うと更に新しい画面を開いてしまうので、開かぬように抑制する必要はありますが。
3m
常連さん
会議室デビュー日: 2004/11/05
投稿数: 34
投稿日時: 2004-11-12 17:59
聖人@SKBさん、todoさん、えんぞ@見習さん
お返事ありがとうございます。

聖人@SKBさん-----
>たつごろーさんも仰っているのですが、
>gSetボタンのonClickを他の個所で記述していませんか?
gSetボタンのonClickは他の個所で記述していません。

todoさん-----
>(1)テキストボックスに"1"を入力してボタンクリックしても何もおきない。
>(2)テキストボックスに"2"を入力してボタンクリックすると子画面が開き、値が表示されない。
>(3)テキストボックスに"3"を入力してボタンクリックすると子画面が開き、"2"が表示される。

初めにこの点を書くことを忘れていたのですが
@親画面のgSetボタンにて子画面(set.aspx)を開く
A子画面のテキストボックスに値を入力
B子画面のOKボタンにてその値を親画面のテキストボックスへ反映

反映された値は親画面にて変更できない(readonly)ので子画面を開いて変更。
その際に今回の質問内容が起きています。

(C親画面に反映された値をgSetボタン押下時にsession変数に格納
D格納された値を子画面のテキストボックスへ表示。で、表示されない…。)

todoさんのおっしゃっているように…
@子画面のテキストボックスに"1"を入力し親画面のテキストボックスに"1"を反映。
そして、gSetボタンを押下すると「何も表示されない」
A次に子画面にて"2"を入力(以下省略)
「1が表示される」
B"3"を入力(以下省略)
「2が表示される」

という結果になりました。
session変数で値をとるタイミングがまずいのではないかと思います。
その点を確かめてみたいと思います。

えんぞ@見習さん-----
>Me.RegisterStartupScript("Startup", "<script language=JavaScript>window.open('set.aspx');</script>")
やってみましたが、うまくいきませんでした。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-11-12 18:10
> 初めにこの点を書くことを忘れていたのですが

もしも、つぎにご質問される機会がありましたら、ぜひ、これくらい詳しい説明
を早いうちにしていただければと思います。
問題点が絞り込めて、回答しやすいです。


丸数字は半角数字に変更しました。

> todoさんのおっしゃっているように…
> 1子画面のテキストボックスに"1"を入力し親画面のテキストボックスに"1"を反映。
> そして、gSetボタンを押下すると「何も表示されない」
> 2次に子画面にて"2"を入力(以下省略)
> 「1が表示される」
> 3"3"を入力(以下省略)
> 「2が表示される」
> という結果になりました。

そうでしたか。

> session変数で値をとるタイミングがまずいのではないかと思います。
> その点を確かめてみたいと思います。

いいえ。違います。
タイミングの問題ではないので、この方法では正しい値と確信できる値を
取得することはできないと思います。
ASP.NETとJavaScriptの関係を理解しないと、この方法では厳しいです。

別の手法になりますが
「JavaScript parent」
を、有名どころの検索エンジンにかけてみてください。



_________________
たつごろー
MCSD.NET、MCDBA、MCSA、MCAD
Oracle Master Platinum 9i、Oracle Master Linux+

[ メッセージ編集済み 編集者: たつごろー 編集日時 2004-11-12 18:15 ]
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-11-12 19:25
引用:

session変数で値をとるタイミングがまずいのではないかと思います。
その点を確かめてみたいと思います。


では、ヒント

引用:

別の手法になりますが
「JavaScript parent」
を、有名どころの検索エンジンにかけてみてください。



「JavaScript opener」ではなく?

私ならクエリー文字列でやります。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8013&forum=7
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=8962&forum=7
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-11-15 10:44
>>「JavaScript parent」
>「JavaScript opener」ではなく?

申し訳ない。
そのとおりです。
_________________
たつごろー
codeseek
こみゅぷらす
3m
常連さん
会議室デビュー日: 2004/11/05
投稿数: 34
投稿日時: 2004-11-15 13:19
たつごろーさん、todoさん
ありがとうございます。
返事が遅れまして、すみません。

>もしも、つぎにご質問される機会がありましたら、ぜひ、これくらい詳しい説明
を早いうちにしていただければと思います。
はい…すみませんでした。
これからは詳しい説明をきちんとします。

todoさんの仰られていた「クエリー文字列」について調べてみました。
そんなやり方があるとは知りませんでした。勉強になりました。
var index1 = document.kotei.TextBox1.value;
window.open('set.aspx?index1=' + index1 ,'','Width=600,Height=500,scrollbars=yes')
試用で作ってみたところうまくいきました。
上記のようなかたちで解決いたしました。

たつごろーさんの仰られていた「JavaScript opener」についても調べてみたいとおもいます。

このような機会があればまたよろしくお願いいたします。
ありがとうございました。

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