2016-05-24 5 views
0
public ActionResult PartTimeFacultyCourseLoadReport() 
    { 
     var teacherStatistics = (from t in db.Teachers 
           join c in db.Courses 
            on t.Id equals c.TeacherId into cGroup 
           where t.Status == "Part Time" 
           orderby t.Designation descending 
           select new 
           { 
            TeacherInfo = t, 
            CourseInfo = from cg in cGroup 
                orderby cg.Code ascending 
                select cg 
           }).ToList(); 

     List<TeacherStatistics> teacherStatisticses = new List<TeacherStatistics>(); 

     int count = 0; 
     foreach (var teacherStatistic in teacherStatistics) 
     { 
      TeacherStatistics aTeacherStatistics = new TeacherStatistics(); 
      aTeacherStatistics.Name = teacherStatistic.TeacherInfo.Name; 
      aTeacherStatistics.Designation = teacherStatistic.TeacherInfo.Designation; 
      aTeacherStatistics.NumberOfCourse = teacherStatistic.TeacherInfo.NumberOfCourse; 
      count = 0; 
      foreach (var courseInfo in teacherStatistic.CourseInfo) 
      { 
       if (count != 0) 
       { 
        aTeacherStatistics.Courses += ", "; 
       } 

       aTeacherStatistics.Courses += courseInfo.Code; 
       aTeacherStatistics.Courses += "("; 
       aTeacherStatistics.Courses += courseInfo.Section; 
       aTeacherStatistics.Courses += ")"; 
       count++; 
      } 
      teacherStatisticses.Add(aTeacherStatistics); 
     } 
     var document = new Document(PageSize.A4, 50, 50, 25, 25); 
     var output = new MemoryStream(); 
     var writer = PdfWriter.GetInstance(document, output); 
     document.Open(); 
     var data = teacherStatisticses.ToList(); 
     document.Add(data); 
     Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", "attachment; filename=PartTimeFaculty.pdf"); 
     Response.BinaryWrite(output.ToArray()); 
     document.Close(); 
     return View(teacherStatisticses); 
    } 

PDFを作成するために、ドキュメントオブジェクトに 'teacherStatisticses'という名前のリストを渡したいとします。私のコードは動作しません。エラー: 次のようなエラーが表示されました。引数1: 'System.Collections.Generic.List'から 'iTextSharp.text.IElement'に変換できません。iTextSharpを使用してドキュメントオブジェクトにリストを追加できません

答えて

0

ここでは、PDFの生成にitextpdfの一部のバージョンを使用しているとします。

誤差はラインである:

document.Add(data); 

PDFドキュメントにプレーンな.NETオブジェクトを追加する方法はありません。私が達成したいとyou`d PDFの構造を予測することはできませんが、上記のコードでは、のように書くことができます便利なサンプルの多くは http://developers.itextpdf.com/examples

基本的なチュートリアルで見つけることができ

foreach(var teacher in teacherStatistics) 
    { 
     var paragraph = new Paragraph(teacher.ToString()); // instead of teacher.ToString() should be some code which translates teacherStatistics projection to the string representation 
     document.Add(paragraph); 
    } 
    //not tested 

itextpdfの場合: http://developers.itextpdf.com/content/itext-7-jump-start-tutorial/chapter-1-introducing-basic-building-blocks

関連する問題