none
縦項目も横項目も複数ある場合の印刷 RRS feed

  • 質問

  • お世話になります。
    印刷の画面に困っています。

    ASP.NET 2.0
    C#
    Windows 2000 と Windows XP
    Microsoft SQL 2005 Express Edition
    上記の環境で開発しております。

    iTextSharpで、見積一覧表を作成しようと思っています。

    列タイトルには、業者名、
    行タイトルには、製品、
    行列一致する箇所には、該当する業者名の製品価格、
    というような一覧表を作成したいのですが、
    業者名も製品も複数あり、見積書毎に数も違います。

    上から順に書き込んでいくように、
    IDataReader で、下記のように業者名を読み込み、

    IDataReader reader_gyousha = (IDataReader)sds_gyousha.Select(DataSourceSelectArguments.Empty);
     while (reader_gyousha.Read())
     {
      Cell kCell1_6 = new Cell(new Phrase(string.Format("{0}", reader_gyousha["業者名"]), fntNormal));
      seihin_table.AddCell(kCell1_6);
     }

    次にIDataReader で、1製品ずつ読み込みながら、
    下記のように価格を読み込んでいます。

    IDataReader reader_seihin = (IDataReader)sds_seihin.Select(DataSourceSelectArguments.Empty);
     while (reader_seihin.Read())
    {
      Cell kCell4_3 = new Cell(new Phrase(string.Format("{0}", reader_seihin["製品名"]), fntNormal));
    seihin_table.AddCell(kCell4_3);
    kCell4_3.BorderWidth = 1;

    IDataReader reader_gyousha2 = (IDataReader)sds_gyousha.Select(DataSourceSelectArguments.Empty);
      while (reader_gyousha2.Read())
      {
       Session["gid"] = reader_gyousha2["業者ID"];
    Session["sid"] = reader_seihin["製品ID"];
       IDataReader reader_gyousha_kakaku = (IDataReader)sds_kakaku.Select(DataSourceSelectArguments.Empty);
       while (reader_gyousha_kakaku.Read())
       {
        GyoushaCount++;
        Cell kCell4_8 = new Cell(new Phrase(string.Format("{0:#,###}", reader_gyousha_kakaku["価格"]), fntNormal));
        seihin_table.AddCell(kCell4_8);
       }
      }
     }

    このやり方でいくと、
    業者名は、5列、製品は、20行まで1ページに印字可能とすると、
    それ以上になった場合には、はみ出てしまいます。

    配列などを使ってやるにしても、
    どのように配列にいれ、どのようにしたら、改ページが
    うまくいくか分からりません。
    どなたか、教えて下さい。

    2009年3月29日 8:34