
お世話になります、よろしくお願いします。
VisualStudio2003でASP.NET(VB)とJavascriptを使ってサイト製作をしています。
ラジオボタンにJavascriptを入れて、項目の表示/非表示を切り替えています。(CSSのdisplay:noneとinlineを切替)
これとは別に、ドロップダウンリストが2つ(A,B)あり、Aのドロップダウンリストを変更するとPostBackして、Bの選択肢が変化するといった風に作成しています。
ここで問題が発生し、PostBackが発生すると、項目の表示が初期状態に戻ってしまいました。
あれこれと考えて、Aにも項目の表示/非表示を切り替えるJavascriptを付けたのですが、どうもJavascriptが実行されてからPostBackが発生しているようで、お手上げです。
PostBackが発生しても、表示をそのままにできる方法は無いのでしょうか?よろしくご教授下さい。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
ポストバック間で状態を保存したいコントロールには、EnableViewStateをTrueにしてください。
サーバコントロールのインスタンスはポストバックを超えて保持されます。
また、PageLoadイベント内でコントロールの初期化を行う場合は、
IsPostBackプロパティを参照し、初期アクセスとポストバックで分けてください。
そうでないと、アクセスのたびに初期化が起きます。
#ページのインスタンスはページアクセスの度にnewされます。
#そのため、変数やコントロールの値はすべて初期化されます。
#ポストバックをまたぐには、SessionとViewStateを使用します。
Atras.NETを使用しないのであれば、
No5のようにRegisterStartupScriptでするのが正解です。
クライアントサイドでの変更もこれで対応します。
なお、最初の回答のようにダミーコントロールの使用は避けてください。
Page.ViewStateを利用してください。
Me.ViewState("aaa") = ・・・・
No.6
- 回答日時:
PageLoadイベントで以下のようにすれば何とかなると思います。
Dim sb_script As String
sb_script = "<script Language='JavaScript'>" & vbCrLf & _
"onload=displayChg();" & vbCrLf & _
vbCrLf & _
"</script>"
RegisterClientScriptBlock("openwin", sb_script)
また、この方法とは全く別に、AドロップダウンとBドロップダウンの連動にAjaxを利用する方法もあるのではないでしょうか?この方法だとリロードが発生しません。
No.5
- 回答日時:
ANo.3様 の通りですが、
「PageLoadの後にJavascript実行したい」ということ、
開発環境がVS2003であれば、
PageクラスのRegisterStartupScriptを使用してJavaScriptを
設定してください。
ブラウザに表示された後、設定したJavaScriptが走るはずです。
No.4
- 回答日時:
ん? んん?
すみません ちょっと問題を整理します
<条件>
・ラジオボタンで項目の表示/非表示を設定している
・ドロップダウンリストがA、Bの2個ある
・Aを選択後、PostBackが発生させてBの選択肢を変化させている
<現象>
・Aを選択後に項目の表示が初期状態に戻る
すべての項目が非表示になっていた?ってことですよね?
<原因>
PostBack発生後ページが再表示されるが
その際、ラジオボタンのJavaScriptが実行されないのでDIVタグに埋め込まれていた初期状態の「style="DISPLAY:none"」が適用されて
すべての項目が非表示になってしまう
現在 上記のように把握しているのですが
間違いないでしょうか?
ということであれば…
あまり難しく考えずに簡単にいきましょう
そのJavaScriptが埋め込まれているaspx側に
window.onload = _displayChg;
を追加するというのはどうでしょう?
ページを表示する際には必ず「_displayChg」を実行させて
項目の表示/非表示を設定し直します
ラジオボタンの初期値は設定する必要がありますが…
window.onloadはページが表示されるときに発生しますので
PostBack発生後にJavaScriptが実行されるようになります
No.3
- 回答日時:
> PostBackが発生しても、表示をそのままにできる方法は無いのでしょうか?
クラアントスクリプトでスタイルを切り替えたという情報はサーバに送信されない。
ラジオボタンの値は送信されるので、「項目の表示/非表示を切り替え」と同じ事をサーバ側で行えばよい。
No.2
- 回答日時:
ん? なんか勘違いをしていたようです…
それでしたら
PageLoad時にJavaScriptを再度実行するしか手はないようですね…
どのようなJavaScriptを実行されているのか
教えていただけないでしょうか?
この回答への補足
返答が遅れてしまい、申し訳ありません。
Javascriptはaspx側に記述していますが
function _displayChg(){
var objAri = document.Form1.rblKBN[0];
var objNasi = document.Form1.rblKBN[1];
if(objAri.checked == true){
hoge.style.display = "inline";
}else if (obNasi.checked == true){
hoge.style.display = "none";
}
と記述し、表示/非表示したいコントロールを
<DIV id="hoge" style="DISPLAY:none"></DIV>
で囲っています。
No.1
- 回答日時:
おそらくPostBack発生後 PageLoadイベントが発生して初期状態に戻っているのでしょう
これは仕様ですので仕方がないです
回避方法として手頃な方法は
ページ中にダミーコントロールを用意して
PageLoadイベント(1回目)でダミーコントロールにフラグをたてるようにする
PostBack発生後のPageLoadイベント(2回目以降)では
ダミーコントロールにフラグがたっていればExitSubみたいな感じにすればよろしいんではないでしょうか?
この回答への補足
回答ありがとうございます。
Page_Loadイベント内でPostBackか非PostBackなのかの判断は行っているのですが、やはり初期状態に戻っています・・・
PostBack時の処理はドロップダウンリストBだけを初期化して、項目を変更しています。
CSSの表示切替を別の手段で行った方がいいのでしょうか・・・
現在、仕方無くコントロールのvisibleをfalseにして表示切替を行っていますが、これだとコントロールのある部分に空白が出来てしまい、見栄えが悪いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- JavaScript 指定時間になったら、WEBサイトの更新を自動で行うには…? 3 2022/04/28 22:14
- Excel(エクセル) 非表示にしたい行をグループ化して折り畳み 4 2022/09/17 20:17
- JavaScript テーブルの中のセレクトボックスの値が0のとき、非表示にしたい 3 2022/05/29 10:13
- 格安スマホ・SIMフリースマホ 通話中に「話し中音」にする方法を教えてください 2 2023/03/26 23:05
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- その他(IT・Webサービス) google サイトの目次表示について 1 2023/06/17 23:24
- JavaScript React と Electron でデスクトップアプリを開発する環境について 1 2023/02/08 11:16
- JavaScript HTML&CSS Javascriptによる動的テーブル 1 2023/03/27 19:51
このQ&Aを見た人はこんなQ&Aも見ています
-
ASP.NET(VB)VBソースからJavascriptの関数を呼ぶには
Microsoft ASP
-
Page_Load時にボタンクリックイベントを実行するには?
Microsoft ASP
-
ポストバック(__doPostback)へ割り込み
Microsoft ASP
-
-
4
ASPで画面間のパラメタ受け渡し
Microsoft ASP
-
5
TextChangeイベントが発生しない
JavaScript
-
6
javascriptからサーバサイドの処理を呼び出す方法を教えてくださ
JavaScript
-
7
ASP.NETのコントロールの値をJavaScriptで取得
JavaScript
-
8
textboxとLabelを動的に変更する
Microsoft ASP
-
9
登録後、呼び出し元ページに戻るには
Microsoft ASP
-
10
ASP.netで、CheckBoxListのSelectedIndexChangedが発生しません!
Microsoft ASP
-
11
asp.netにてgridviewの列を動的にボタンやチェックボックスを追加して実装したいのですが具
Microsoft ASP
-
12
Javascript_submit()完了後に処理したい
JavaScript
-
13
親ウインドのASPをリロードさせたい
JavaScript
-
14
ASP .NETでファイル選択ダイアログ
Microsoft ASP
-
15
ASPの変数の値をJAVA Script内で使用したいのですが
Microsoft ASP
-
16
【ASP2.0】TextBoxのフォーカスアウトでPostBackを実装させたい
Microsoft ASP
-
17
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
18
VB.NETで、プログラム上から新しいウィンドウを開くをする方法
Visual Basic(VBA)
-
19
データバインドした値のコードでの取得方法
Microsoft ASP
-
20
vb.netで画面のコントロールId名を変数で動的に制御し処理する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PageLoadの後にJavascript実行...
-
VB.netでボリュームレベルメー...
-
画面遷移が不正ですと表示されます
-
ページングが大量発生する原因...
-
「押下」は「おうか」と読む?
-
セッションハイジャックの対策...
-
エクセル 参照先のデータを変...
-
[html]<input type="file">タグ...
-
PHPからWindowsログインユーザ...
-
VBAで一時中断したプログラムの...
-
Spread.NETの行削除について
-
エンターキーを押したときに関...
-
type属性とlanguage属性の違い...
-
【C言語】JPEGのEXIF情報を書き...
-
HTMLのKEYとVALUE...
-
submitのタグ。
-
ボタンの色の変更
-
HTTPリクエストヘッダーの設定...
-
Dreamweaver+PHP+MySQL・オスス...
-
ボタンをクリックした時に、入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS2010 WEBブラウザーコン...
-
Javascriptでページ内容全体を...
-
PageLoadの後にJavascript実行...
-
ASP.NET(VB)でのデータグリッド...
-
VB2005 DateTimePickerのカレン...
-
フォームアプリでのカレンダー...
-
VB.netでボリュームレベルメー...
-
EM_GETFIRSTVISIBLELINEで
-
DataGridViewコントロールの使い方
-
グーグルカレンダーのようなカ...
-
ASP.NETのWebフォームでカレン...
-
更新処理の進行状況
-
ASP.NET SiteMapPathコントロー...
-
calendarコントロールの表示月...
-
エクセルでセルに時間の自動入...
-
goo簡単ホームページ ページ名...
-
スピンボタンの制御
-
ページ間ポスティングと検証コ...
-
VS2005 ASP.NET GridView...
-
IE7でホームページ表示できません
おすすめ情報