C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: GridViewに画像を表示する方法


(過去ログ 43 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■22594 / inTopicNo.1)  GridViewに画像を表示する方法
  
□投稿者/ アクア (72回)-(2008/07/28(Mon) 11:16:05)

分類:[ASP.NET (C#)] 

ASP.NET2.0 C#です。

データベースにvarbinary型として画像データが入っているのですが、
その画像データをGridviewに表示する方法がわかりません。

GridViewには、現在System.Byte[]と表示されています。
画像データを一旦、画像ファイルにしてからImageFieldにファイルを
指定すれば表示されるのですが、
Byteデータをそのまま表示する方法はないのでしょうか?

わかる方、ご教授お願いします。
引用返信 編集キー/
■22596 / inTopicNo.2)  Re[1]: GridViewに画像を表示する方法
□投稿者/ みきぬ (29回)-(2008/07/28(Mon) 11:49:19)
No22594 (アクア さん) に返信
> Byteデータをそのまま表示する方法はないのでしょうか?
>
これってどういう意味ですか?
1.ファイルを作成することなく画像を表示したい
2.データバインドで画像を表示したい。ファイルは作成されてもいい
3.Byteデータのダンプのようなものを出したい
4.その他
引用返信 編集キー/
■22598 / inTopicNo.3)  Re[2]: GridViewに画像を表示する方法
□投稿者/ おてやわらか (4回)-(2008/07/28(Mon) 12:05:09)
image 型を使わずに、varbinary型を使った理由は?
引用返信 編集キー/
■22600 / inTopicNo.4)  Re[3]: GridViewに画像を表示する方法
□投稿者/ アクア (73回)-(2008/07/28(Mon) 13:09:31)
みきぬさん、おてやわらかさん返信ありがとうございます。


>> Byteデータをそのまま表示する方法はないのでしょうか?
>これってどういう意味ですか?
>1.ファイルを作成することなく画像を表示したい
>2.データバインドで画像を表示したい。ファイルは作成されてもいい
>3.Byteデータのダンプのようなものを出したい
>4.その他
1.ファイルを作成することなく、画像を表示したいです。


No22598 (おてやわらか さん) に返信
> image 型を使わずに、varbinary型を使った理由は?
MSDNにimage型は削除予定なので、使わないでください。
とあったのでvarbinary型を使用しました。
image型だったら、簡単に実装できたりするのでしょうか?

引用返信 編集キー/
■22602 / inTopicNo.5)  Re[4]: GridViewに画像を表示する方法
□投稿者/ 黒龍 (114回)-(2008/07/28(Mon) 13:29:56)
ASP.NETなどのWeb技術で使われるHTTPという仕組みは1リクエストに対し1レスポンスが基本になります。
画像の場合も画像のリクエストに対して画像のデータという感じですね。HTML中にイラストが1枚はってあるような状況ではHTMLのリクエスト、レスポンスの後にブラウザがHTMLを解釈し、IMGタグの画像を再度リクエストするという形になります。
なので別リクエストに答えれる状況で無いといけません。一時ファイルをどんどん生成するというのは現実的ではないので画像を返すハンドラ(ashx)等を作成するのがよいでしょう。
IDを元に画像を返すようなハンドラを別に用意しておき、ASPXの方はIMGタグのURLを先のハンドラにIDを渡すような感じで生成となります。
引用返信 編集キー/
■22627 / inTopicNo.6)  Re[5]: GridViewに画像を表示する方法
□投稿者/ おてやわらか (5回)-(2008/07/28(Mon) 19:59:51)
2008/07/28(Mon) 23:18:45 編集(投稿者)
2008/07/28(Mon) 23:18:07 編集(投稿者)
2008/07/28(Mon) 22:14:53 編集(投稿者)
2008/07/28(Mon) 20:07:28 編集(投稿者)

<pre><pre>Web頁上でのGridViewに付いて、不明な点があったので、
Image型を使わない理由が知りたかったので。

今回の件は、
varbinary型に画像をInsertするには?
http://bbs.wankuma.com/index.cgi?mode=al2&namber=22459
で説明されている、
http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_11/vs2005db_11_01.html
の
BbsShow.aspxのテンプレート・レイアウトを修正する
の
BbsImage.aspx より抜粋
>    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
>        Dim reader As IDataReader = sds.Select(DataSourceSelectArguments.Empty)
>        If reader.Read() Then
>            ' Response.ContentType = reader("contentType")
>            If Not IsDBNull(reader("idata")) Then
>                Response.BinaryWrite(DirectCast(reader("idata"), Byte()))
>            End If
>        End If
>        Response.End()
>    End Sub
で、やっている事が肝になる、ということかな?自信無いです。

試してみました。
GridView
ImageのDataBidingsのプロパティを、
ImageUrl
カスタムバインド
Eval("ID", "BbsImage.aspx?ID={0}")

BbsImage.aspx を作成して。
データソース
SELECT JA_Image FROM LineTable WHERE (ID = @ID)
パラメータソース:QueryString、ID

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim reader As Data.IDataReader = SqlDataSource1.Select(DataSourceSelectArguments.Empty)
        If reader.Read() Then
            If Not IsDBNull(reader("JA_Image")) Then
                Response.BinaryWrite(DirectCast(reader("JA_Image"), Byte()))
            End If
        End If
        Response.End()
    End Sub

GridViewで、MS-SQLの画像が表示できます。

※http://www.atmarkit.co.jp/fdotnet/vs2005db/vs2005db_11/vs2005db_11_01.html
 を書籍化したもの、VisualStudio2005でいってみようASP.NET2.0編初版第1刷
 226頁VB用コード、227頁C#用コード



引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -