- PR -

ASP.NETでHTMLコントロールでImageButtonのように画像を表示したい

投稿者投稿内容
tpkr
ベテラン
会議室デビュー日: 2003/02/24
投稿数: 55
投稿日時: 2004-07-26 18:31
お世話になっております。

タイトルの通りですが、ASP.NETでHTMLコントロールで、WebコントロールのImageButtonのように画像を表示したいのです。
(やりたいこととしては、ImageButtonからJavaScriptの実行をしたいのですが、サーバに返さずにクライアント内で直接実行をしたいというものです。)

HTMLボタンコントロールでは、ビルドスタイルの設定で背景に画像を設定することは出来るのですが、マシンによって表示されるものとされないものが発生しています。
この現象が発生するマシンのOSやソフトウェアについて一貫した性質は見受けられないのですが、原因または関連ありそうな事をご存知の方がいらっしゃればご教授いただきたいです。

画像のパスは相対パスで指定しています。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-26 19:57
引用:

てつさんの書き込み (2004-07-26 18:31) より:

(やりたいこととしては、ImageButtonからJavaScriptの実行をしたいのですが、サーバに返さずにクライアント内で直接実行をしたいというものです。)


 onclickで定義済み関数にとばす、ということではなく?
<image src="" onclick="do()">
 一度、MSDNのDHTMLあたりを読んでおくと、幸せになれると思いますよ。

MSDN ライブラリ 任意のリリース→Web 開発→Web 開発→Web 開発(全般)→SDK ドキュメント→Internet SDK: プラットフォーム SDK→ダイナミック HTML



引用:

この現象が発生するマシンのOSやソフトウェアについて一貫した性質は見受けられないのですが、原因または関連ありそうな事をご存知の方がいらっしゃればご教授いただきたいです。


 ん〜?ブラウザが解釈できるかどうかの違い、だと思いますけど。。。
tpkr
ベテラン
会議室デビュー日: 2003/02/24
投稿数: 55
投稿日時: 2004-07-28 11:12
ご返答ありがとうございます。

事の顛末が抜けてしまっていて誤解を与えてしまったかもしれませんが、
ASPのImageButtonコントロール内のOnClickで定義済み関数に飛ばすようにしていたのですが、それで実行してみると「do()は○○.aspxのメンバではありません。」というコンパイルエラーのメッセージが出てしまっていました。

エラーメッセージからASPのメンバとして定義済み関数を認識してしまうのではないかと判断し、多少いじってみたものの回避作が分からなかったため、HTMLコントロールに切り替えたところ、定義済み関数の呼び出しはうまく行ったのですが、逆に今度はボタンにImageを表示する方法ことができなそうだ、という次第です。

ASPのイメージボタンコントロールはなぜかDisable制御とかもうまく動作しないためHTMLコントロールでJavaScriptで制御したほうが楽チン(というか安心)なのかなあと思っていたのです。
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2004-07-28 11:42
こんにちは。

VS.NETをお使いになってますか?
単純に画像を貼り付けたいだけでしたら、
HTMLボタンを右クリックして「ビルドスタイル」を選択、
スタイルビルダの左側にある「背景」を選択すると幸せになれます。
(当方の環境はVS.NET2003)

ちなみに、
引用:

ASPのイメージボタンコントロールはなぜかDisable制御とかもうまく動作しないためHTMLコントロールでJavaScriptで制御したほうが楽チン(というか安心)なのかなあと思っていたのです。


「Disable制御とかもうまく動作しない」というのはどういうことでしょう?
また、クライアント側でJavaScriptを実行しないように設定されてしまったら
全く動かなくなってしまいますので絶対安心ではないですね。

#追記:
現象が発生しているマシンと、発生しないマシンのOS・ブラウザ・ブラウザの設定等で何か違いはありませんか?
その辺りを調べたりこちらに提示して頂ければ、大元の原因が分かるかもしれません。
_________________
雑談のNUSHI

[ メッセージ編集済み 編集者: まゆりん 編集日時 2004-07-28 11:50 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-28 13:14
引用:

てつさんの書き込み (2004-07-28 11:12) より:

ASPのImageButtonコントロール内のOnClickで定義済み関数に飛ばすようにしていたのですが、それで実行してみると「do()は○○.aspxのメンバではありません。」というコンパイルエラーのメッセージが出てしまっていました。


もしかして、.aspxファイルに直接記入したとか?
<asp:ImageButton id="imgButton" onclick="do()">
?????こんなだっけ?

 これはコンパイルエラーですよ。インテリセンスが働かないように、ImageButton要素にそんな属性はないからです。なので、ビハインドコード側で追加します。
imgButton.Attributes.Add("onclick", "do()")
tpkr
ベテラン
会議室デビュー日: 2003/02/24
投稿数: 55
投稿日時: 2004-07-28 16:56
まゆりんさん、Jittaさん、ご返答ありがとうございます。

>まゆりんさん
スレッドの最初の投稿で書いたように、HTMLボタンのビルドスタイルは使用しています。
Disable制御がうまく動作しないというのは、先ほど確認したところ勘違いでした。
ちゃんと制御できています。
勘違いしていた理由は、見た目がDisableっぽくグレイアウトしていなかったためです。
通常のボタンは文字がグレイアウトするので、イメージボタンもそういう感じになるのかと思ったらそうではないんですね。

コンパイルエラーのコードから調べていたら@IT会議室の過去ログに、ほぼ同じものを見つけました。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3736&forum=7&3
この記事の方は普通のボタンコントロールだったのですが、イメージボタンコントロールのDisable制御をする場合はどうするものなんでしょう。
もしかして画像をDisable用に作って入れ替えたりするんでしょうか??

また、こちらで書かれている2つのアドバイスを実行してみましたが、OnClick = "javascript: do();"では動作せず、Attribute.addを使っても、おそらくJavaScriptをクライアントサイドで実行した後にPostが発生してしまって、PostBackして返ってきた画面では何も起こらない状態になっています。

Jittaさんのご返答はこちらの後者の方法だったのですが、完全にクライアントサイドで、サーバにPostせずにASPコントロールを使うことは出来ないものでしょうか。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-07-28 17:19
もしかして
imgButton.Attributes.Add("OnClick", "do()")
と書いてませんか?

もしそうであれば
imgButton.Attributes.Add("onclick", "do()")
で確認してみてください

あとイメージボタンのClickイベントに何か設定してあるのであれば
削除しておいたほうがいいですね
tpkr
ベテラン
会議室デビュー日: 2003/02/24
投稿数: 55
投稿日時: 2004-07-28 17:39
>ゆうじゅんさん
ありがとうございます。

ご指摘の通り、imgButton.Attributes.Add("OnClick", "do()")と書いておりました。
小文字に直してみましたが、残念ながら変化はありませんでした。

Clickイベントはコードに発生させていません。(ビハインドコードイベントが書かれてなければPost処理が発生しないかな〜というのを期待したんですけど、無理のようでした…)

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