2017-05-03 3 views
0

私はasp.net/c#を使用してダウンロードされるPDFファイルを作成しています。これはすべて、divで作成されたHTMLGenericControlにロードされる一連のHTMLTablesを作成することで、コードの中で実行されます。このdivは文字列に変換され、PDFファイルを生成する関数に渡されます。以下のコードサンプルです:あなたは、私は、ビットマップ変数を作成していていることがわかりますforeachループの下部にC#コードビハインド生成テーブルにイメージをロードするにはどうすればよいですか?

//This dataset contains the student's name, age and grade, want it for all sections 
List<studentExportPersonal> lsep = sp.getExportPersonal(exportStudents); 

//Page Header containg Grade, Student Name, and Age 
HtmlGenericControl div = new HtmlGenericControl("div"); 

foreach (studentExportPersonal sep in lsep) 
{ 
    foreach (string sec in secs) 
    { 
     HtmlTable identityTable = new HtmlTable(); 
     div.Controls.Add(identityTable); 

     identityTable.Width = "100%"; 
     identityTable.Border = 0; 
     identityTable.Style.Add("margin-bottom", "20px"); 

     HtmlTableRow identityTR = new HtmlTableRow(); 
     identityTable.Rows.Add(identityTR); 

     HtmlTableCell tdGrade = new HtmlTableCell(); 
     identityTR.Cells.Add(tdGrade); 
     tdGrade.Style.Add("font-size", "30px"); 
     tdGrade.Align = "center"; 
     tdGrade.RowSpan = 2; 
     tdGrade.InnerText = sep.si.studentGrade; 

     HtmlTableCell tdStudentName = new HtmlTableCell(); 
     identityTR.Cells.Add(tdStudentName); 
     tdStudentName.Style.Add("font-size", "30px"); 
     tdStudentName.Align = "center"; 
     tdStudentName.InnerText = sep.si.studentName; 

     HtmlTableCell tdStudentAge = new HtmlTableCell(); 
     identityTR.Cells.Add(tdStudentAge); 
     tdStudentAge.Style.Add("font-size", "30px"); 
     tdStudentAge.Align = "center"; 
     tdStudentAge.RowSpan = 2; 
     tdStudentAge.InnerText = sep.si.studentAge + " Years Old"; 

     HtmlTableRow identityTR1 = new HtmlTableRow(); 
     identityTable.Rows.Add(identityTR1); 

     HtmlTableCell tdPic = new HtmlTableCell(); 
     identityTR1.Cells.Add(tdPic); 

     Bitmap studPic; 

     if (HttpContext.Current.Request.IsLocal) 
      studPic = (Bitmap)System.Drawing.Image.FromFile(@"C:\studentPics\" + sep.si.studentPicID, true); 
     else 
      studPic = (Bitmap)System.Drawing.Image.FromFile(@"E:\Website\Cascade\studentPics\" + sep.si.studentPicID, true); 
    } 
} 

export dmc = new export(); 

var sb = new StringBuilder(); 
div.RenderControl(new HtmlTextWriter(new StringWriter(sb))); 
string s = sb.ToString(); 

dmc.exportPDF("Student Profiles", "Portrait", s); 

、私の質問は、私はHTMLTableCell変数にロードしないか、でしょうか?

+0

なぜCSSを使用しないのですか?また、ローカルファイルへのハードコードされた文字列パスを参照していることに気付きました。アプリケーションがデプロイされても画像は表示されません。 – Chad

+0

ありがとうございました...私はそれが私が把握しようとしているもののタイプだと思います...しかし、それもCSSを使用していない理由です...すべてがコードの背後で起こっているので、テーブルは処理されます.aspxを打つ前に、cssは決して遊びに来る機会を持っていません... –

+0

それは、各セル、または一般的に使用されるユニークなイメージですか?それが各セルのユニークなイメージなら、あなたのロジックを詳しく見ることができます。共通の場合は、CSSはそれに最適です – Chad

答えて

0

セルに行を追加するのと同じように、イメージをセルに追加することができます。

HtmlImage image = new HtmlImage(); 
image.Src ="/studentPics/" + sep.si.studentPicID; 
tdPic.Controls.Add(image); 

しかし、あなたのコードを見ると、GridViewが良い選択になるでしょう。 リストを直接GridViewにバインドすることができます。

<asp:GridView ID="GridView1" runat="server"></asp:GridView> 

if (!Page.IsPostBack) 
{ 
    GridView1.DataSource = lsep; 
    GridView1.DataBind(); 
} 
+0

HtmlImage - 完璧!もう少し詳しく説明するために、私は学校システムのために働いています。これは、教師が生徒の写真を撮ってプロフィールをプリントアウトできるようにすることです。生徒の画像IDはデータベースに保存されているので、生徒を選択した後、データベースからIDを読み取るので、IDの動的リストです。しかし、HtmlImageは美しく動作します。再度、感謝します!! –

+0

イメージはデータベースに格納されているか、またはデータベースに格納されているイメージのパスです。最初のイメージであれば、イメージをbase64に変換してからテーブルに表示する必要があります。 – VDWWD

関連する問題