pmway 发表于 2017-4-14 14:30:10

打印报表时出现的错误,求解决

发生了一个意外错误。更多信息: 'In order to use an object with the ObjectDataSource it must support the IEnumerable interface.'

Lenka.Guo 发表于 2017-4-14 18:08:18

报表预览的时候是否正常?以及您使用的是什么环境?

pmway 发表于 2017-4-17 17:22:57


PageReport def = new PageReport(new FileInfo(_fullReportFileName));
def.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(BindDataSouce);
WebReportViewer.Report = def;

public void BindDataSouce(object sender, LocateDataSourceEventArgs args)
{
    if (args.DataSourceName == "DataSource1" && args.DataSetName == "DataSet1")
    {
      args.Data = GetTempDataSouce();
    }
}

private object GetTempDataSouce()
{
    DataTable dt = new DataTable();

    DataColumn dc1 = new DataColumn("V_Data_SalesDetails_FPRODUCTNO", typeof(string));
    DataColumn dc2 = new DataColumn("V_Data_SalesDetails_FPRODUCTNAME", typeof(string));
    DataColumn dc3 = new DataColumn("V_Data_SalesDetails_FPRODUCTSPEC", typeof(string));
    DataColumn dc4 = new DataColumn("V_Data_SalesDetails_FPRICE", typeof(double));
    DataColumn dc5 = new DataColumn("V_Data_SalesDetails_FNUMBER", typeof(double));
    DataColumn dc6 = new DataColumn("V_Data_SalesDetails_FMONEY", typeof(double));

    dt.Columns.Add(dc1);
    dt.Columns.Add(dc2);
    dt.Columns.Add(dc3);
    dt.Columns.Add(dc4);
    dt.Columns.Add(dc5);
    dt.Columns.Add(dc6);

    DataRow dr1 = dt.NewRow();
    dr1 = "产品编号";
    dr1 = "产品名称";
    dr1 = "产品规格";
    dr1 = "10";
    dr1 = "11";
    dr1 = "110";

    dt.Rows.Add(dr1);
    return dt;
}

模版里面设置的数据源 类型为 object provider

一直提示 该报表存在错误,不能被正常处理。

Lenka.Guo 发表于 2017-4-17 18:04:43

您设置的Object Provider 需要返回的是Object 类型的数据,而您现在返回的是DataTable(DataSet)所以会报错
Object 数据绑定参考博客: http://blog.gcpowertools.com.cn/post/ActiveReports-ListDataSource.aspx

pmway 发表于 2017-4-17 18:22:39

换成dataset provider也是一样

Lenka.Guo 发表于 2017-4-18 09:29:43

报表里面引用的字段名是与代码中的字段名一致吗?

pmway 发表于 2017-4-20 18:41:18

问题已经处理

Lenka.Guo 发表于 2017-4-21 09:19:12

谢谢反馈~
页: [1]
查看完整版本: 打印报表时出现的错误,求解决