2011-08-26 16 views
1

グリッドビューコントロールを定義しました。タイプがImageFieldのグリッドビューを定義し、グリッドビューをList<MyRecord>にバインドしました。ASP.NetのGridviewにSystem.Drawing.Imageをバインドする

MyRecordにはタイプSystem.Drawing.Imageのプロパティが含まれていますが、イメージはグリッドビューにレンダリングされません。

jpgファイルを指すURLフィールドを使用して多数の記事を再バインドしていますが、ファイルではなく実際のイメージがあります。

提案がありますか?

答えて

0

この資料に記載のようなカスタムImageHandlerを作成します。

Image Handling In ASP.NET

+0

これは機能しますか? ImageFieldはパスを期待していませんか? –

+0

ありがとう..私はカスタムのImagHandlerを実装しましたが、グリッドビューの列全体が同じイメージを持つことがわかりました。しかし、私は画像のList <>を持っており、各行の画像を返すようにHandlerを呼び出す方法が不明です。おそらく、私は一時的なSQLデータベースを構築し、それにgridviewをバインドする必要があります。 – Dave31836

0

をのImageFieldがどのように動作するかではないこと。画像へのURLが必要です。

<asp:ImageField DataImageUrlField = "ImageUrl" ... 
+0

URLは通常、pic.jpg .....のようなファイルを指していますが、この場合、ハンドラページHandler.ashxを指すようにすることができます.Handler.ashxは、URLリクエストを受け入れ、それはファイルに格納されます。 – Dave31836

+0

@ Dave31836:はい、良い点です。それはうまくいくでしょう。 –

0

Handler.ashxが働いていた...ありがとう

をコードでは、私はこれを動的に私が

string v = context.Request.QueryString["id"]; 
て画像インデックスを取得するハンドラを呼び出す ImageUrl = string.Format("~/HandlerGetImage.ashx?id={0}", imageNumber);

を設定しました

次に、次のように画像が返されます。

int ix = Convert.ToInt32(v); 
    MemoryStream ms = new MemoryStream(Query.imageList[ix]); // imagelist is created elsewhere 
    System.Drawing.Image returnImage = System.Drawing.Image.FromStream(ms); 

    context.Response.ContentType = "image/jpeg"; 

    //saving bitmap image 
    returnImage.Save(context.Response.OutputStream, 
    System.Drawing.Imaging.ImageFormat.Jpeg); 
    returnImage.Dispose(); 
関連する問題