none
コードからTableのセルに画像を表示したい RRS feed

  • 質問

  • お世話になっております。

    テーブルのセルに画像を表示しようと思ったのですが

    ImageやBackgroundimageとかそういうのがあると思ったのに見つかりません。

    ネット検索してもそれらしいのが見つかりませんでしたので

    もしやと思い質問させていただきました。

    ご存知の方ご連絡いただけましたら幸いです。

    2010年7月23日 9:45

回答

  • 以下が参考になりませんか?

    Add Image to Table Control
    http://www.velocityreviews.com/forums/t111354-add-image-to-table-control.html


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月23日 10:37
    モデレータ
  • たぶん、パスの指定がまずいのだと思います。

    Web サイトのパス
    http://msdn.microsoft.com/ja-jp/library/ms178116(VS.80).aspx

    の、「現在の Web サイトの物理ファイル パスの決定」辺りを参考にしてみて下さい。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月23日 21:46
    モデレータ
  • Imageコントロールを使って画像を表示しますので、URLで画像が表示できることが前提です。ImageコントロールのImageUrlプロパティの名前からもわかる通り、パスはURLになります。

    Image.ImageUrl プロパティ
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.image.imageurl(VS.80).aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月26日 1:33
    モデレータ
  • Server.MapPath(".")はそのaspxファイルがある物理的なパスになります。保存場所はそれでも良いですが、ImageオブジェクトのImageUrlに物理的なパスは適しません。 ImageUrlには画像を表示するURLを指定して下さい。
    なお、%20は、HtmlEncodeによって空白が%20に変換された結果です。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月30日 4:40
    モデレータ
  • >"App_Data/pic/0001.jpg"

    ブラウザでURLを確認してみて下さい。 http://何とかかんとか/Webアプリケーション名や仮想ディレクトリ名/pic/0001.jpg っぽい感じになります。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月30日 6:25
    モデレータ
  • App_Dataはアプリケーションのデータファイルなどを入れておくところです。もし、このフォルダの中身が外部から見えてしまうと、セキュリティ上、重大な問題になります。一般的な例として、例えば会員情報のmdbファイルをブラウザからアクセスできるところに置いておくと、それを丸ごと取得され、いわゆる情報漏えいにつながります。

    したがって、イメージファイルはApp_Data以外に置き、外部からURLでアクセスできるようにして下さい。例えばアプリケーションルートに置けば、以下のように指定できます。

    ImageUrl="~/001.JPG"


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月30日 12:06
    モデレータ

すべての返信

  • 以下が参考になりませんか?

    Add Image to Table Control
    http://www.velocityreviews.com/forums/t111354-add-image-to-table-control.html


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月23日 10:37
    モデレータ
  • trapemiyaさんいつもお世話になっております。

    最初は英語でぎょっとしましたが、なんてことはなかったです。

    とても参考になりました。

                            Image image = new Image();
                            image.ImageUrl = Server.HtmlEncode(@"filepath");
                            TableCell1.Controls.Add(image);

    このようにした所画像をいれることができました。

    ありがとうございます。

    ただ・・・・

    画像が表示されない場合のよく見るあのマークが表示されてしまい

    肝心の実物は出てこない状態です・・・

    何ででしょう。

    2010年7月23日 13:15
  • たぶん、パスの指定がまずいのだと思います。

    Web サイトのパス
    http://msdn.microsoft.com/ja-jp/library/ms178116(VS.80).aspx

    の、「現在の Web サイトの物理ファイル パスの決定」辺りを参考にしてみて下さい。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月23日 21:46
    モデレータ
  • ご回答ありがとうございます。

    ちなみにパスはこんな感じなので間違っては無いと思うんです。

    この掲示板の仕様があるので、円マークはわざと全角で表記してます。

    @"C:¥Users¥Public¥Pictures¥Sample Pictures¥Desert.jpg"

    2010年7月26日 1:09
  • Imageコントロールを使って画像を表示しますので、URLで画像が表示できることが前提です。ImageコントロールのImageUrlプロパティの名前からもわかる通り、パスはURLになります。

    Image.ImageUrl プロパティ
    http://msdn.microsoft.com/ja-jp/library/system.web.ui.webcontrols.image.imageurl(VS.80).aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月26日 1:33
    モデレータ
  • trapemiyaさんご回答ありがとうございます。

    説明不足で申し訳なかったのですが

    サーバの画像ではなくローカルの画像を表示させたかったのです。

    ただ、自分で調べてみたところローカルのパスはセキュリティ上の理由で

    取得できないことがわかりました。

    ですので、javascriptでローカルの画像が表示できないか調べているところです。

    もし、それがだめであればいったんサーバに保存してそこから表示できるように

    しようかと考えています。

    何か気になる点がありましたらアドバイスいただけましたら幸いです。

    2010年7月28日 9:21
  • お世話になっております。

    とりあえずjavascriptを調べてみたところよき文献が見つからず、かつ、はまりそうなのでやめときました。

    ですので、いったんサーバに保存して表示する方法を試してみました。

    保存はうまくいったのですが表示されません。

    ただ、ちょっと気になる点があります。

    下記のように保存しました。

    FileUpload1.SaveAs(MapPath(".") + "¥¥pic¥¥" + 00000001.JPG);

    FileUpload1.SaveAs(Server.HtmlEncode(MapPath(".") + "¥¥pic¥¥" + 00000001.JPG));

    (¥はわざと大文字)

    2パターン試しましたが同じフォルダに保存されます。

    そして、このようなコードを書いて表示させようとしました。

    Image image = new Image();
    image.ImageUrl = Server.HtmlEncode(MapPath(".") + "¥¥pic¥¥" + 00000001.JPG);
    TableCell1.Controls.Add(image);

    それで表示しようとすると画像が出てこないのでソースを見てみたところ

    画像のパスが下記のように表示されてました。

    C:\Users\hoge\Documents\Visual%20Studio%202008\Projects\projectname\projectname\pic\00000001.JPG

    %20 はどんないみなのでしょうか?

    なぜ表示されないのでしょうか?

     

    ご存知の方教えていただけましたら助かります。

    2010年7月30日 4:16
  • Server.MapPath(".")はそのaspxファイルがある物理的なパスになります。保存場所はそれでも良いですが、ImageオブジェクトのImageUrlに物理的なパスは適しません。 ImageUrlには画像を表示するURLを指定して下さい。
    なお、%20は、HtmlEncodeによって空白が%20に変換された結果です。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月30日 4:40
    モデレータ
  • trapemiyaさんご回答ありがとうございます。

    ・Server.MapPath(".")をやめました

    ・HtmlEncodeをやめました

    ・%20 なるほどですね。勉強になりました。

    "App_Data/pic/0001.jpg"

    こんな感じにした所、今までは画像アイコンだったのに、バッテンアイコンに変わりました。

    もう少しがんばってみます。

    2010年7月30日 6:21
  • >"App_Data/pic/0001.jpg"

    ブラウザでURLを確認してみて下さい。 http://何とかかんとか/Webアプリケーション名や仮想ディレクトリ名/pic/0001.jpg っぽい感じになります。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月30日 6:25
    モデレータ
  • trapemiyaさんご回答ありがとうございます。

    http://localhost:53427/App_Data/pic/001.JPG

    こんな風にフルパスでもだめです・・・

    2010年7月30日 8:54
  • App_Dataはアプリケーションのデータファイルなどを入れておくところです。もし、このフォルダの中身が外部から見えてしまうと、セキュリティ上、重大な問題になります。一般的な例として、例えば会員情報のmdbファイルをブラウザからアクセスできるところに置いておくと、それを丸ごと取得され、いわゆる情報漏えいにつながります。

    したがって、イメージファイルはApp_Data以外に置き、外部からURLでアクセスできるようにして下さい。例えばアプリケーションルートに置けば、以下のように指定できます。

    ImageUrl="~/001.JPG"


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2010年7月30日 12:06
    モデレータ
  • trapemiyaさんご回答ありがとうございます。

    やっとできました。

    初歩的なことなのに長々とありがとうございます。

    ただ、これを見た初心者はだいぶ理解しやすくなったと思います。

    よく適当に思わせぶりな回答をしてくる人が多い中

    最後までお付き合いいただいてありがとうございます。

    2010年7月30日 12:35