2011-08-26 61 views
1

我已经定义了一个GridView控件,其中有一列类型为ImageField,我将gridview绑定到List<MyRecord>将System.Drawing.Image绑定到ASP.Net中的Gridview中

MyRecord包含System.Drawing.Image类型的属性,但图像不在gridview中呈现。

有很多文章重新绑定使用URL字段指向(说)一个JPG文件...但我有实际的图像,而不是一个文件。

有什么建议吗?

回答

0

创建自定义ImageHandler喜欢这篇文章介绍:

Image Handling In ASP.NET

+0

这项工作? ImageField不希望有一条路吗? –

+0

谢谢..我实现了一个自定义ImagHandler,我现在看到gridview的整个列有相同的图像。但是,我有一个List <>的图像,并不清楚如何让Handler调用返回每行图像。也许我必须构建一个临时SQL数据库并将gridview绑定到该数据库。 – Dave31836

0

这就是不ImageField的是如何工作的。它期望图像的URL。

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

URL通常指向文件,如pic.jpg .....但在这种情况下,您可以指向Handler页面Handler.ashx,该页面被编译为接受URL请求并返回图像,它存储在一个文件中。 – Dave31836

+0

@ Dave31836:是的,好点。这也可以很好地工作。 –

0

的Handler.ashx工作...谢谢

在代码中,我设置了ImageUrl = string.Format("~/HandlerGetImage.ashx?id={0}", imageNumber);

这个动态调用处理程序中,我得到

string v = context.Request.QueryString["id"]; 
图像索引

然后,下面的图像返回:

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();