Reputation: 915
I have a grid which i have to export to pdf. I have accomplished this by using aspxgridviewexporter and printinsystem. Everything worked fine. The color of the header cells of the grid in the pdf has grey backcolor which i want to change.
Here is my code:
PrintingSystem ps = new PrintingSystem();
PrintableComponentLink link1 = new PrintableComponentLink(ps);
GridViewExporter.GridView.Styles.Header.BackColor = Color.Blue;//This line didn't change the color.
link1.Component = GridViewExporter;
PrintableComponentLink link2 = new PrintableComponentLink(ps);
link2.Component = ((IChartContainer)ChartId).Chart;
// export column header
Link reportTitle = new Link();
reportTitle.CreateDetailArea +=
new CreateAreaEventHandler(reportTitle_CreateDetailArea);
Link chartTitle = new Link();
chartTitle.CreateDetailArea +=
new CreateAreaEventHandler(chartTitle_CreateDetailArea);
CompositeLink compositeLink = new CompositeLink(ps);
compositeLink.Links.AddRange(new object[] { reportTitle, link1, chartTitle, link2 });
//compositeLink.Links.Add(link1);
compositeLink.CreateDocument(false);
link1.PrintingSystem.Document.AutoFitToPagesWidth = 1;
link1.Landscape = false;
using (MemoryStream stream = new MemoryStream())
{
compositeLink.PrintingSystem.ExportToPdf(stream);
Response.Clear();
Response.Buffer = false;
Response.AppendHeader("Content-Type", "application/pdf");
Response.AppendHeader("Content-Transfer-Encoding", "binary");
Response.AppendHeader("Content-Disposition", "attachment; filename=Report.pdf");
Response.BinaryWrite(stream.ToArray());
Response.End();
}
ps.Dispose();
Here I have used
GridViewExporter.GridView.Styles.Header.BackColor = Color.Blue;
to change the header color to blue.But i see the same grey color.
Please help.
Upvotes: 1
Views: 825
Reputation: 1473
You should use RenderBrick event handler to process renderig style for necessery columns. Look at the example below
<dx:ASPxGridViewExporter ID="_gridViewExporter" runat="server" GridViewID="_gridView"
Landscape="True" PaperKind="A4" OnRenderBrick="OnRenderGridViewBrick" />
protected void OnRenderGridViewBrick(object sender, ASPxGridViewExportRenderingEventArgs e)
{
if (e.RowType == GridViewRowType.Data)
{
var column = e.Column as GridViewEditDataColumn;
if (column != null)
{
switch (column.FieldName)
{
case Constants.FieldName_Semaphore:
e.BrickStyle.BackColor = Color.Black;
break;
}
}
}
}
Upvotes: 1
Reputation: 71
Try visiting the link above and see if it will solve your problem. Hope this helps! :)
Upvotes: 1