zhengyb 发表于 2020-7-28 11:27:56

生成pdf数据源绑定

直接拖放几个文本框可以生成pdf到指定路径下,但是有数据源,就不知道知道该怎么写了,请指教

KearneyKang 发表于 2020-7-28 11:27:57

这是Dataset的绑定
public void LocateData(object sender, LocateDataSourceEventArgs args)
{
#region
if (args.DataSet.Query.DataSourceName == "DataSource1")
{
if (args.DataSet.Name == "DataSet1")
{
var name = args.Parameters.Value.ToString();
List<FormData> data = new List<FormData>();
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 5; j++)
{
for (int k = 1; k <= 2; k++)
{
data.Add(new FormData()
{
Main = i + "CM主控制器",
Sub = "T-80" + i + j + "子控制器",
Variable = "T-80" + i + j + k + ".PV",
Type = "CV投用情况",
Active = 0 + (i + j + k) % 2,
Value = (95 - i / 10.0 + j / 10.0 + k / 100.0) / 100.0
});
}
}
}
args.Data = data;
}
}
#endregion
#region
if (args.DataSet.Query.DataSourceName == "DataSource2")
{
if (args.DataSet.Name == "DataSet2")
{
List<TimeInfo> info = new List<TimeInfo>();
info.Add(new TimeInfo() { Type = "开始时间", Value = Convert.ToDateTime("22/08/2017 09:00:00") });
info.Add(new TimeInfo() { Type = "结束时间", Value = Convert.ToDateTime("22/08/2017 10:00:00") });
info.Add(new TimeInfo() { Type = "CV投用指标", Value = 0.95 });
args.Data = info;
}
}
#endregion
#region
if (args.DataSet.Query.DataSourceName == "DataSource3")
{
if (args.DataSet.Name == "DataSet3")
{
List<Operate> operate = new List<Operate>();
operate.Add(new Operate() { Number = 1, Type = "SVCTL61", Count = 838 });
operate.Add(new Operate() { Number = 2, Type = "SVCTL64", Count = 226 });
operate.Add(new Operate() { Number = 3, Type = "SVCTL23", Count = 222 });
operate.Add(new Operate() { Number = 4, Type = "SVCTL55", Count = 37 });
operate.Add(new Operate() { Number = 5, Type = "SVCTL63", Count = 35 });
operate.Add(new Operate() { Number = 6, Type = "SVCTL01", Count = 30 });
operate.Add(new Operate() { Number = 7, Type = "SVCTL14", Count = 29 });
operate.Add(new Operate() { Number = 8, Type = "SVCTL25", Count = 27 });
operate.Add(new Operate() { Number = 9, Type = "SVCTL02", Count = 26 });
operate.Add(new Operate() { Number = 10, Type = "SVCTL54", Count = 20 });
operate.Add(new Operate() { Number = 11, Type = "其他", Count = 969 });
args.Data = operate;
}
}
#endregion

}
DataTable
private void locatedate(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
      {
            if (args.DataSet.Query.DataSourceName == "DataSource1")
            {
                if (args.DataSet.Name == "DataSet1")
                {
                  args.Data = returndata();
                }
            }
            if (args.DataSet.Query.DataSourceName == "DataSource2")
            {
                if (args.DataSet.Name == "DataSet2")
                {
                  args.Data = returndata();
                }
            }
      }
      private DataTable returndata()
      {
            DataTable dt = new DataTable();
            dt.Columns.Add("产品编号");
            dt.Columns.Add("产品名称");
            dt.Columns.Add("单价");
            dt.Columns.Add("库存量");
            dt.Columns.Add("产地");
            dt.Rows.Add("A001", "苹果", 10, 300,"中国");
            dt.Rows.Add("A002", "葡萄", 20, 200, "中国");
            dt.Rows.Add("A003", "香蕉", 30, 400, "中国");
            dt.Rows.Add("A004", "甘蔗", 10, 300, "中国");
            dt.Rows.Add("A005", "荔枝", 20, 200, "中国");
            dt.Rows.Add("A006", "芒果", 30, 400, "中国");
            dt.Rows.Add("A007", "猕猴桃", 110, 300, "中国");
            dt.Rows.Add("A008", "柠檬", 210, 200, "中国");
            dt.Rows.Add("A009", "栗子", 320, 400, "中国");
            dt.Rows.Add("A010", "火龙果", 100, 300, "中国");
            dt.Rows.Add("A011", "青芒", 250, 200, "中国");   
            dt.Rows.Add("A012", "巴旦木", 320, 200, "中国");
            dt.Rows.Add("A013", "土豆", 380, 400, "中国");
            dt.Rows.Add("A014", "苹果", 110, 300, "中国");
            dt.Rows.Add("A015", "葡萄", 420, 200, "中国");
            dt.Rows.Add("A016", "香蕉", 530, 400, "中国");
            dt.Rows.Add("A017", "土豆", 380, 400, "中国");
            dt.Rows.Add("A018", "苹果", 110, 300, "中国");
            dt.Rows.Add("A019", "葡萄", 420, 200, "中国");
            dt.Rows.Add("A020", "香蕉", 530, 400, "中国");
            dt.Rows.Add("A021", "苹果", 10, 300, "中国");
            dt.Rows.Add("A022", "葡萄", 20, 200, "中国");
            dt.Rows.Add("A023", "香蕉", 30, 400, "中国");
            dt.Rows.Add("A024", "甘蔗", 10, 300, "中国");
            dt.Rows.Add("A025", "荔枝", 20, 200, "中国");
            dt.Rows.Add("A026", "芒果", 30, 400, "中国");                        
            return dt;
      }

KearneyKang 发表于 2020-7-28 11:31:30

你好,根据你的描述应该是直连数据库的时候可以正常的导出PDF,但是动态数据源绑定就不行,这是因为你导出的写法上没有进行数据源绑定导致的,这样就会出现你说的导出报错的问题
具体的导出绑定数据源的主要代码:
rpt1.Document.LocateDataSource += new LocateDataSourceEventHandler(LocateData);GrapeCity.ActiveReports.PageReport rpt1 = new GrapeCity.ActiveReports.PageReport(new FileInfo(@"多条件级联模糊过滤.rdlx"));
            rpt1.Document.LocateDataSource += new LocateDataSourceEventHandler(LocateData);

            // Create an output directory.
            System.IO.DirectoryInfo outputDirectory = new System.IO.DirectoryInfo(@"D:\MyWord");
            outputDirectory.Create();

            // Provide settings for your rendering output.
            GrapeCity.ActiveReports.Export.Word.Page.Settings wordSetting = new GrapeCity.ActiveReports.Export.Word.Page.Settings();

            // Set the FileFormat property to .OOXML.
            wordSetting.FileFormat = GrapeCity.ActiveReports.Export.Word.Page.FileFormat.HTML;

            // Set the rendering extension and render the report.
            GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension wordRenderingExtension = new GrapeCity.ActiveReports.Export.Word.Page.WordRenderingExtension();
            GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider outputProvider = new GrapeCity.ActiveReports.Rendering.IO.FileStreamProvider(outputDirectory, System.IO.Path.GetFileNameWithoutExtension(outputDirectory.Name));

            // Overwrite output file if it already exists.
            outputProvider.OverwriteOutputFile = true;

            rpt1.Document.Render(wordRenderingExtension, outputProvider, wordSetting);

zhengyb 发表于 2020-7-28 11:44:09

LocateData怎么写

zhengyb 发表于 2020-7-28 11:44:11

LocateData怎么写
页: [1]
查看完整版本: 生成pdf数据源绑定