2015-04-23 2 views
0

У меня есть datatable dt и хочу сделать из него PDF-файл. Все это динамично и работает, но я не могу отформатировать макет, такие как альтернативный фон строки и т.д. Вот мой код:Форматирование radgrid экспорт в PDF

private void MakeGridExportToPDF(string strTitle, DataTable dt) 
{ 
    using (RadGrid grid = new RadGrid { AutoGenerateColumns = false, ShowHeader = true, }) 
    { 
     grid.NeedDataSource += (object sender, GridNeedDataSourceEventArgs e) => 
       { 
        grid.DataSource = dt; 
       }; 
     // Add columns 
     dt.Columns.OfType<DataColumn>().ToList().ForEach(col => 
     { 
      grid.MasterTableView.Columns.Add(new GridBoundColumn { DataField = col.ColumnName, HeaderText = col.Caption.ToCamel() }); 
     }); 
     GridExportSettings export = grid.ExportSettings; 
     export.OpenInNewWindow = true; 
     export.FileName = strTitle; 
     export.IgnorePaging = true; 
     GridPdfSettings pdf = export.Pdf; 
     pdf.PageHeight = Unit.Parse("210mm"); // 
     pdf.PageWidth = Unit.Parse(GetPageWidth(grid.MasterTableView.Columns.Count)); // 
     pdf.DefaultFontFamily = "Arial Unicode MS"; 
     pdf.PageTopMargin = Unit.Parse("45mm"); 
     grid.ItemCreated += (object sender, GridItemEventArgs e) => 
     { 
      GridItem item = e.Item; 
      if (item is GridDataItem) 
      { 
       item.Style["vertical-align"] = "middle"; 
       item.Style["text-align"] = "center"; 
      } 
      switch (item.ItemType) //Mimic RadGrid appearance for the exported PDF file 
      { 
       case GridItemType.Item: 
        item.Style["background-color"] = "#DFDFDF"; 
        item.Font.Italic = true; 
        break; 
       case GridItemType.AlternatingItem: 
        item.Style["background-color"] = "#FFFFFF"; 

        break; 
       case GridItemType.Header: 
        item.Style["background-color"] = "#FFFFFF"; 
        item.Style["Color"] = "#767676"; 
        item.Font.Bold = true; 
        break; 
       case GridItemType.Footer: 
        item.Style["background-color"] = "#FFFFFF"; 


        break; 
      } 
     }; 

     this.smCSVFile.Controls.Add(grid); 
     grid.MasterTableView.ExportToPdf(); 
     bDone = true; 
    } 
} 

Что я делаю неправильно. ItemCreated запускается, когда сетка создается сначала, но не при экспорте и не видит никаких изменений. Любая помощь будет принята с благодарностью.

+0

Моя проблема была решена путем удаления использования (RadGrid сетки .... –

ответ

0

Моя проблема была решена путем удаления использования (RadGrid сетки .... и просто сделать Radgrid = new RadGrid { AutoGenerateColumns = false, ShowHeader = true, }