2011-11-05 57 views
-2

我在DevExpress Gridview Concepts中工作。我是新来的。我的要求是,我应该在gridview中显示图像。如果存在多个图像,则应将其粘贴在第二行。我将从数据库中获取图像路径。在DevExpress Gridview中绑定图像

请提供示例代码。我搜索了很多谷歌,但我无法找到这种特殊情况。

在下面的链接,我给我的源代码的一部分..

http://community.devexpress.com/forums/p/105855/358119.aspx#358119

+0

你是什么平台感兴趣? – Mikhail

+0

我在.Net和SQL Server中工作。在这我使用DevExpress GridView .. – RobinHood

+0

哪一个DevExpress GridView? ASP.NET,WinForms,WPF,SL,VCL? – Mikhail

回答

1

你可以通过不同的方式.......

public class MyClass 
{ 
    public int ID { get; set; } 
    public byte[] MyImage { get; set; } 
} 

这是一个存储图像作为二进制blob(MS SQL图像或varbinary(max),Oracle BLOB等的表的包装类)

我发现了4种不同的方式(即“简单方法”;当然有无数的其它更复杂的替代品),以显示该二进制数据作为图像,利用内部的ASPxGridView的DevExpress' ASPxImageASPxBinaryImage控制:

<dx:ASPxGridView ID="gridImages" runat="server" 
    AutoGenerateColumns="False" KeyFieldName="ID"> 
    <Columns> 
    <dx:GridViewDataTextColumn Caption="ID" FieldName="ID"> 
    </dx:GridViewDataTextColumn> 

使用像

var images = database.Query<MyImages>().OrderBy(r => r.ID); 
gridImages.DataSource = images; 
gridImages.DataBind(); 

查询中使用GridViewDataBinaryImageColumn

<dx:GridViewDataBinaryImageColumn FieldName="MyImage"> 
    </dx:GridViewDataBinaryImageColumn> 

insid使用ASPxBinaryImage E中的DataItemTemplate

<dx:GridViewDataColumn FieldName="MyImage" > 
     <DataItemTemplate> 
     <dx:ASPxBinaryImage ID="img" runat="server" 
      Value='<%# Eval("MyImage") %>'> 
     </dx:ASPxBinaryImage> 
     </DataItemTemplate> 
    </dx:GridViewDataColumn> 

ASPxBinaryImage使用Value属性来存储一个字节数组,其中所述的DevExpress框架转换成其中的src请求的DevExpress实现的URL来服务字节流。

如果你喜欢ASP:图像或ASPxImage到ASPxBinaryImage,你需要编写一个ashx的处理程序,以获取图像数据:

public class MyImageHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
    int id = 0; 
    int.TryParse(context.Request["id"], out id); 

    var image = database.FirstOrDefault<MyClass>(c => c.ID == id); 

    if (image == null) 
    { 
     context.Response.Clear(); 
     return; 
    } 

    context.Response.ContentType = "image/png"; 
    context.Response.BinaryWrite(image.MyImage); 
    context.Response.End(); 
    } 

此。ashx的处理程序是通过设置的ImageUrlFormatString调用的GridViewDataImageColumn

设置的ASPxImage的ImageUrl属性:

<dx:GridViewDataColumn > 
     <DataItemTemplate> 
     <dx:ASPxImage runat="server" ID="imgTemplate" 
      ImageUrl='<%# "myimage.ashx?id=" + Eval("ID") %>'> 
     </dx:ASPxImage> 
     </DataItemTemplate> 
    </dx:GridViewDataColumn> 
    </Columns> 
2
+0

我无法打开此链接.. – RobinHood

+0

转到devexpress支持中心devexpress.com/support/center并在gridview中键入图像搜索。请务必查看问题和知识库文章的选项卡。如果这不能解决您的问题,那么支持中心是您解答问题的最佳选择。 –