rdlc動的挿入ピクチャの実現

6697 ワード

1、rdclを作成してTablixコントロールを入れて、Tablixの頭と尾を削除して、detialだけを残して、
2、Textboxをdetialに入れます.レポート・データ・ソース(ピクチャ・パスを含むフィールド)を設定します.
3、TablixのdatasetName(画像を含むデータソースのパス)を設定する
4、Textboxの背景式を設定する(ファイルボックス-》属性-』塗り-』式=Fields!path.Value)
5、データソースコードのロードとレポートのロード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Reporting.WinForms;

namespace Demo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private string ff = @"d:\\ ";
        private void Form1_Load(object sender, EventArgs e)
        { 
            // 
            this.reportViewer1.LocalReport.EnableExternalImages = true;
            
            List<PicPath> list1 = new List<PicPath>();
            List<PicPath> list2 = new List<PicPath>();
            string[] pics = Directory.GetFiles(@"d:\\ ", "*.jpg");
        //  for (int i = 0; i < pics.Length; i++)
            //   for (int i = 0; i <400; i++)
              for (int i =53; i < 55; i++)
            {

               //PicPath p = new PicPath();
               //p.path = @"file:///" + pics[i];
               //list1.Add(p);
               if (i % 2 == 0)
               {
                   PicPath p = new PicPath();
                   p.path = @"file:///" + pics[i];
                   list1.Add(p);
               }
               else
               {
                   PicPath p = new PicPath();
                   p.path = @"file:///" + pics[i];
                   list2.Add(p);
               }
           }

            
            this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", list1));
            this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", list2));
            using (MemoryStream ms = 
                new MemoryStream(Demo.Properties.Resources.Report1)
                        )
            {
                this.reportViewer1.LocalReport.LoadReportDefinition(ms);
            }
            this.reportViewer1.RefreshReport();
        }

         
    }
}