- PR -

はじめまして

1
投稿者投稿内容
.NETって難しい
会議室デビュー日: 2004/06/27
投稿数: 9
投稿日時: 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]にはなりません.
こちらもあわせてお願いいたします.
簡単な質問で申し訳ございませんが・・・
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-28 08:25
まずはこのページ


 表示されたHTMLを、「ソースを表示」で確認してみてください。なぜエラーになるかわかると思います。

 エラーの原因がわかったら対応方法が2つあります。
・サーバにポストバックして、表示/非表示と共にスクリプトの吐出も制御する
・「見えない」パネルを表示して、見える/見えないをスクリプトで制御する

どちらにするか決まったら、その方法を実現する為の方法を調べます。
後者ならこのサイトが便利。
.NETって難しい
会議室デビュー日: 2004/06/27
投稿数: 9
投稿日時: 2004-06-29 22:07
Jittaさん返事ありがとうございます.
確かに「ソースを表示」でコードを見ることができますが
今回作成している画面がポップアップ画面のため右クリックが利きません.
ポップアップ画面呼び出しの際に「Panel1」の各オブジェクトに値を挿入
しているのですが、画面中のラジオボタン選択で「Panel2」をアクティブ
にしています.
このとき、「Panel2」のVisibleが「false」であるためオブジェクト参照が
できないため、エラーになると思います.
ですからラジオボタン選択により「Panel2」のVisibleを「true」とします。
frm=document.form1;
frm.Panel2.Visible=true;
としたらエラーとなります.
やり方は間違っていないと思うのですが.
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2004-06-29 22:47
引用:

このとき、「Panel2」のVisibleが「false」であるためオブジェクト参照が
できないため、エラーになると思います.


Panel2のVisibleがFalseだからオブジェクト参照が失敗するのでなく、
VisibleがFalseのPanel2はHTMLタグとしてクライアントに送信されていないから、
JavaScriptでは制御できないのです。

それと、サーバー側でのWebコントロールのプロパティとクライアント側でのHTMLタグのプロパティと混同されていないでしょうか?

横着せずに、一度ポップアップ画面じゃない簡単なWebFormを作って実行されたページのソースを確認されてはどうでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-30 08:53
引用:

.NETって難しいさんの書き込み (2004-06-29 22:07) より:

確かに「ソースを表示」でコードを見ることができますが
今回作成している画面がポップアップ画面のため右クリックが利きません.

このとき、「Panel2」のVisibleが「false」であるためオブジェクト参照が
できないため、エラーになると思います.
ですからラジオボタン選択により「Panel2」のVisibleを「true」とします。
frm=document.form1;
frm.Panel2.Visible=true;
としたらエラーとなります.
やり方は間違っていないと思うのですが.


 あれ?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のどこかを検索すると、どうやったら実現できるかも書いてある
.NETって難しい
会議室デビュー日: 2004/06/27
投稿数: 9
投稿日時: 2004-06-30 12:38
お世話になっております。

スタイルシートの制御にて「panel」の表示/非表示の制御を行うことが出来ました。
今回でVB側の制御/Javascript側の制御の互換性などの勉強になりました。
ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-30 16:22
一例
コード:

<html>
<head>
<title>てすと</title>
</head>
<body>
ここは見えています。
<div style="display: block" id="sv">
このブロックは、見えたり、無くなったりします。
</div>
確認してください。
<hr>
<script>
function switchVisible() {
var obj = document.getElementById("sv");
if (obj.style.display == "block") {
obj.style.display="none";
} else {
obj.style.display="block";
}
}
</script>
<input type="button" value="切替" onclick="switchVisible();">
</body>
</html>



[ メッセージ編集済み 編集者: Jitta 編集日時 2004-06-30 16:24 ]
1

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