Raz Mahato
Raz Mahato

Reputation: 915

How to change the backcolor of a aspxgridexporter gridview

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

Answers (2)

Michael
Michael

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

bluejaded
bluejaded

Reputation: 71

http://documentation.devexpress.com/#AspNet/DevExpressWebASPxGridViewExportASPxGridViewExporter_RenderBricktopic

Try visiting the link above and see if it will solve your problem. Hope this helps! :)

Upvotes: 1

Related Questions