- PR -

[ASP.NET]プログラムからのHTML要素設定

投稿者投稿内容
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2006-10-04 12:05
お世話になっておりますm(_ _)m

今日は皆様のお知恵を拝借したく書き込みました。
(ASP.NETで開発)

HTML内の

<input style="Z-INDEX: 104; LEFT: 144px; POSITION: absolute; TOP: 376px" type="image" src="/Image/Button/btnEditCtrl.gif"
name="btnEditCtrl">

というタグがあった場合、
プログラム側のPage_Load内で
src要素の値を設定することは可能でしょうか?

ご存知の方がいらっしゃいましたら、ぜひご教授お願い致しますm(_ _)m
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-10-04 12:15
引用:

新人Sさんの書き込み (2006-10-04 12:05) より:

プログラム側のPage_Load内でsrc要素の値を設定することは可能でしょうか?


普通に 1 行で可能です。
質問される前に、使用しているクラスのメンバ一覧を見ておくと良いと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-10-04 12:28
もう少し補足すると、タグに runat="server" という一文を入れておくと、サーバー側で操作可能になります。
この場合は、
コード:
<input id="hogehoge" style="Z-INDEX: 104; LEFT: 144px; POSITION: absolute; TOP: 376px" type="image" src="/Image/Button/btnEditCtrl.gif" 
name="btnEditCtrl" runat="server"> 


となります。その場合、id を設定する必要があり、上記では hogehoge です。
ここまですると、hogehoge という変数名でサーバー側でアクセスする事ができます。型は HtmlInputImage です。

ASP.NET のバージョン、コードビハインドなのかそうでないのかで変わってきますが、変数を宣言する必要がある場合があります。
ASP.NET 1.x + コードビハインドなら、ビハインドソースファイルに protected HtmlInputImage hogehoge 変数を宣言してください。
_________________
囚人のジレンマな日々
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-10-04 12:31
クラスを使ってなくてHTML要素になってるんだと思うけど。。。
デザイナーが先に作成したデザインにあわせてプログラムを記述したりしてるのかな。

このInputタグにrunat="server"とIDを追加すればID.Srcに対して値を設定する
ことができます。
詳しくはHtmlInputImageクラスについて調べてみてください。
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2006-10-04 14:30
じゃんぬねっとさん、囚人さん、どっとねっとふぁんさん、早速の返信ありがとうございますm(_ _)m

どっとねっとふぁんさんがおっしゃるとおり
いつもだったら、「デザイナ画面でぺたぺたと貼っていって、そのコントロールのプロパティをコード上で設定する」という方法でコーディングするのですが、この画面に関してはHTMLに直接、先ほどのタグを埋め込んでいます。
そして、Page_Loadでサーバー側の処理が走り、その値をイメージのSrc要素に設定したいのです。
さらにonClickのタイミングでクライアント側でVBScriptの関数が走る、といったかんじです。

実は、いろんなページのソースを参考にしていたのですが、IDを設定してもソース(.vbファイル)の方では宣言されているわけではないので
hogehoge.src="/Image/Button/btnEditCtrl.gif"
(hogehogeはID)
と、アクセスできないではないか。と、思っていました。
しかし、他のWebコントロールと同じように

Protected WithEvents hogehoge As System.Web.UI.HtmlControls.HtmlImage

と、宣言してみるとやっとアクセスすることができました!

今日は何時間も悩まされていたので、本当に助かりました!
皆様、私の基本的な質問に対して答えてください本当にありがとうございます!!
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2006-10-05 13:13
質問したことに関連しての疑問なのですが、今回の場合は一般的なコントロールでHtmlInputImageのプロパティを使って値を設定することができました。
しかし、コントロールが下記のように一般的ではない場合(なんか、言い方がおかしいですが)どうやってcodebase要素にアクセスしたらよいのかがわかりません(>_<。

<OBJECT id="imgCtrl" codeBase="http:///ocx.test.cab#version=0,0,0,1" height="300" width="400" classid="clsid:aaa" runat="server" VIEWASTEXT>

HtmlGenericControlでアクセスしようとしたのですが、当然codebaseというプロパティがあるわけもなく。。また、要素名に対しての値を設定するようなメソッドはないかと探したのですが、そういったメソッドもなさそうでした。。

お手数をおかけして申し訳ないのですが、ご存知の方がいらっしゃいましたらご教授お願いできないでしょうか?<(_ _)>
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2006-10-05 14:31
> 要素名に対しての値を設定するようなメソッドはないかと探したのですが、そういったメソッドもなさそうでした。。

Attributesで。

imgCtrl.Attributes["CodeBase"]="http:///ocx.test.cab#version=0,0,0,1"

でいいんじゃないかな。
新人S
ベテラン
会議室デビュー日: 2005/10/12
投稿数: 74
投稿日時: 2006-10-05 14:52
どっとねっとふぁんさん、いつも返信ありがとうございますm(_ _)m

AttributesはReadOnlyだったので違うと思ってました。。。(>_<;

ここまで書いて実行して気付いたのですが、
runat="server"を書くと
『GUID には、ハイフンを 4 つ含む 32 桁の数字 (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) を含んでいなければなりません。』

という解析エラーになってしまいます。
ということは、サーバー側では扱えないコントロールということでしょうか。。

せっかくどっとねっとふぁんさんに教えていただいたのに、すみません(>_<。

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