The ASPxGridView control exports images contained in a column of the GridViewDataBinaryImageColumn type.
If your grid displays images in a column of the GridViewDataImageColumn type, handle the ExportRenderBrick event and assign the image to the ImageValue property.
C#protected void Grid_ExportRenderBrick(object sender, ASPxGridViewExportRenderingEventArgs e) {
var dataColumn = e.Column as GridViewDataColumn;
if(dataColumn != null && dataColumn.FieldName == "ImagePath" && e.RowType == GridViewRowType.Data)
e.ImageValue = GetImageBinaryData(e.Value.ToString());
}
Note that the ExportRenderBrick event does not fire in DataAware export mode, so you should set the export mode to WYSIWIG
.
C#protected void btnXlsExport_Click(object sender, EventArgs e) {
Grid.ExportXlsToResponse(new XlsExportOptionsEx() { ExportType = ExportType.WYSIWYG });
}
protected void btnXlsxExport_Click(object sender, EventArgs e) {
Grid.ExportXlsxToResponse(new XlsxExportOptionsEx() { ExportType = ExportType.WYSIWYG });
}
Files to Review
Documentation
Technical Demos
Example Code
ASPx<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Site.master" CodeBehind="Default.aspx.cs" Inherits="Export._Default" %>
<asp:Content ID="Content" ContentPlaceHolderID="MainContent" runat="server">
<table>
<tr>
<td style="padding-right: 4px">
<dx:ASPxButton ID="btnPdfExport" runat="server" Text="Export to PDF" OnClick="btnPdfExport_Click" />
</td>
<td style="padding-right: 4px">
<dx:ASPxButton ID="btnXlsExport" runat="server" Text="Export to XLS" OnClick="btnXlsExport_Click" />
</td>
<td style="padding-right: 4px">
<dx:ASPxButton ID="btnXlsxExport" runat="server" Text="Export to XLSX" OnClick="btnXlsxExport_Click" />
</td>
<td style="padding-right: 4px">
<dx:ASPxButton ID="btnRtfExport" runat="server" Text="Export to RTF" OnClick="btnRtfExport_Click" />
</td>
</tr>
</table>
<dx:ASPxGridView ID="Grid" runat="server" AutoGenerateColumns="False" DataSourceID="XmlDataSource1"
OnExportRenderBrick="Grid_ExportRenderBrick" >
<Columns>
<dx:GridViewDataTextColumn FieldName="Common_Name" Caption="Common name" />
<dx:GridViewDataTextColumn FieldName="Species_Name" Caption="Species name" />
<dx:GridViewDataImageColumn FieldName="ImagePath" Caption="Image">
<PropertiesImage>
<ExportImageSettings Width="180" Height="120" />
</PropertiesImage>
</dx:GridViewDataImageColumn>
</Columns>
<SettingsPager PageSize="5" />
</dx:ASPxGridView>
<asp:XmlDataSource ID="XmlDataSource1" runat="server" DataFile="~/App_Data/Fishes.xml" />
</asp:Content>
C#using System;
using System.IO;
using DevExpress.Export;
using DevExpress.Web;
using DevExpress.XtraPrinting;
namespace Export {
public partial class _Default : System.Web.UI.Page {
protected void Grid_ExportRenderBrick(object sender, ASPxGridViewExportRenderingEventArgs e) {
var dataColumn = e.Column as GridViewDataColumn;
if (dataColumn != null && dataColumn.FieldName == "ImagePath" && e.RowType == GridViewRowType.Data)
e.ImageValue = GetImageBinaryData(e.Value.ToString());
}
protected void btnPdfExport_Click(object sender, EventArgs e) {
Grid.ExportPdfToResponse();
}
protected void btnXlsExport_Click(object sender, EventArgs e) {
Grid.ExportXlsToResponse(new XlsExportOptionsEx() { ExportType = ExportType.WYSIWYG });
}
protected void btnXlsxExport_Click(object sender, EventArgs e) {
Grid.ExportXlsxToResponse(new XlsxExportOptionsEx() { ExportType = ExportType.WYSIWYG });
}
protected void btnRtfExport_Click(object sender, EventArgs e) {
Grid.ExportRtfToResponse();
}
byte[] GetImageBinaryData(string relativePath) {
string path = Server.MapPath(relativePath);
return File.Exists(path) ? File.ReadAllBytes(path) : null;
}
}
}