2014-01-23 63 views
1

我有一个网格,我必须导出为pdf。我通过使用aspxgridviewexporter和printinsystem完成了这个任务。一切正常。 pdf中网格的标题单元格的颜色具有我想要改变的灰色背景颜色。如何更改aspxgridexporter gridview的背景色

这里是我的代码:

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(); 

在这里,我已经使用

GridViewExporter.GridView.Styles.Header.BackColor = Color.Blue; 

改动标题颜色blue.But我看到相同的灰色。

请帮忙。

回答

1

您应该使用RenderBrick事件处理程序来处理需要列的渲染样式。看下面的例子

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