在DevExpress Gridview中绑定图像

时间:2011-11-05 05:18:12

标签: devexpress

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

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

在以下链接中,我已经提供了源代码部分..

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

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

你可以采用不同的方式.......

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

是将图像存储为二进制blob的表的包装类(MS SQL image或varbinary(max),Oracle BLOB等。)

我发现了4种不同的方式(也就是“简单方法”;当然还有无数其他更复杂的选择)将二进制数据显示为图像,使用DevExpress中的ASPxImageASPxBinaryImage控件一个ASPxGridView

<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>

在DataItemTemplate中使用ASPxBinaryImage

 <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:Image或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();
  }

通过设置GridViewDataImageColumn

的ImageUrlFormatString来调用此.ashx处理程序

     

设置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)

以下知识库文章介绍了如何完成此任务: http://www.devexpress.com/Support/Center/KB/p/A2707.aspx

它描述了主要想法并包含一个可以下载的例子