- - PR -
はじめまして
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-27 00:46
現在、ASP.NETでアプリケーション開発をしています.
そこでみなさんに相談です. ラジオボタン選択によって表示できる「panel」をしたいのですが サーバ(vb:「PostBack」を[true])側で処理を行なうとJavascript側で別のpanel上のオブジェクト制御(テキストに値挿入など)がかかれているので「参照できません」とのエラーが出ます. そこで「FORM_LOAD」中にそのラジオボタンの「onclick」のイベントを追加して Javascript側で制御させようとしています. Javascript側に frm = document.Form1; if(rblselect[0].checked=true){ frm.panel1.visible=true; frm.panel2.visible=false; }else{ frm.panel1.visible=false; frm.panel2.visible=true; } と記述しているのですが 「[panel1]はオブジェクトではありません」というえらーになります. 間違ったことは書いていないはずなのですが原因が見えません. 知恵を御貸しください. また、同じくラジオボタンでの制御で textbox.readonly=false; textbox.Cssclass="txtreadonly"; textbox.value="0"; と書いたとき、テキストボックスに「0」は表示されすが [readonly]にはなりません. こちらもあわせてお願いいたします. 簡単な質問で申し訳ございませんが・・・ | ||||
|
投稿日時: 2004-06-28 08:25
まずはこのページ。
表示されたHTMLを、「ソースを表示」で確認してみてください。なぜエラーになるかわかると思います。 エラーの原因がわかったら対応方法が2つあります。 ・サーバにポストバックして、表示/非表示と共にスクリプトの吐出も制御する ・「見えない」パネルを表示して、見える/見えないをスクリプトで制御する どちらにするか決まったら、その方法を実現する為の方法を調べます。 後者ならこのサイトが便利。 | ||||
|
投稿日時: 2004-06-29 22:07
Jittaさん返事ありがとうございます.
確かに「ソースを表示」でコードを見ることができますが 今回作成している画面がポップアップ画面のため右クリックが利きません. ポップアップ画面呼び出しの際に「Panel1」の各オブジェクトに値を挿入 しているのですが、画面中のラジオボタン選択で「Panel2」をアクティブ にしています. このとき、「Panel2」のVisibleが「false」であるためオブジェクト参照が できないため、エラーになると思います. ですからラジオボタン選択により「Panel2」のVisibleを「true」とします。 frm=document.form1; frm.Panel2.Visible=true; としたらエラーとなります. やり方は間違っていないと思うのですが. | ||||
|
投稿日時: 2004-06-29 22:47
Panel2のVisibleがFalseだからオブジェクト参照が失敗するのでなく、 VisibleがFalseのPanel2はHTMLタグとしてクライアントに送信されていないから、 JavaScriptでは制御できないのです。 それと、サーバー側でのWebコントロールのプロパティとクライアント側でのHTMLタグのプロパティと混同されていないでしょうか? 横着せずに、一度ポップアップ画面じゃない簡単なWebFormを作って実行されたページのソースを確認されてはどうでしょうか? | ||||
|
投稿日時: 2004-06-30 08:53
あれ?Webにポップアップってありましたっけ?showModalDialog?これって、右クリック効かないんですか?(あ、ホントだ) でも、ShowModalDialogを、openに置き換えて実験することはできますよね?それすらできない?さらに、IE以外では使えませんが、大丈夫ですか? で、HTML4.01について、きちんと調べてください。Webアプリケーションの作成には、HTML、DHTML、CSS1の知識が必要です。 ラフィンさんとかぶりますが、ASP.NETの部品にあるVisibleプロパティをfalseにすると、HTMLとして出力されません。これが『ソースを確認するとわかる』と書いた理由です。HTMLに出力されない、すなわちオブジェクトとして存在しないので、エラーになるのは当然です。また、HTMLのオブジェクトにVisibleというプロパティは存在しません。 その上で、「サーバにポストバックして、表示/非表示と共にスクリプトの吐出も制御する」、「『見えない』パネルを表示して、見える/見えないをスクリプトで制御する」という2つの解決策を提案しました。 後者の「見えない」というのは、Visibleプロパティのことではありません。「見えないオブジェクトを表示する」という微妙な表現をしたのがまずかったですね。まぁ、ソースを見て「Visibleをtrueにすると出力されない」ことがわかっていれば、気がつけたと思いますが。 これについてはCSSを調べてください。スタイルシートで、存在しているけれども見えないという状態を作り出します。例えば、MSDNのオンライン版などでは、ツリーの折りたたみをしていますよね。ああいうことをする為のスタイルが存在します。 #そして、@ITのどこかを検索すると、どうやったら実現できるかも書いてある | ||||
|
投稿日時: 2004-06-30 12:38
お世話になっております。
スタイルシートの制御にて「panel」の表示/非表示の制御を行うことが出来ました。 今回でVB側の制御/Javascript側の制御の互換性などの勉強になりました。 ありがとうございました。 | ||||
|
投稿日時: 2004-06-30 16:22
一例
[ メッセージ編集済み 編集者: Jitta 編集日時 2004-06-30 16:24 ] |
1