• rdlc子报表中显示照片的关键容易出错点


    rdlc报表在子报表中显示数据代码如下:

    ReportViewerService.ReportViewerService ds = new ReportViewerService.ReportViewerService();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["PrintDataSource"] != null)
            {
                repStuInfoData rsd = new repStuInfoData();
                rsd.dtStuInfo.Merge(LoadData());
                if (rsd.dtStuInfo.Rows.Count > 0)
                {
                    //设置数据源
                    rvStuInfo.ProcessingMode = ProcessingMode.Local;
                    //设置报表
                    rvStuInfo.LocalReport.ReportPath = "WebPage/Reports/repStuInfo.rdlc";
                    rvStuInfo.LocalReport.DataSources.Clear();
                    rvStuInfo.LocalReport.DataSources.Add(new ReportDataSource("repStuInfoData_dtStuInfo", rsd.dtStuInfo));
                    
                    rvStuInfo.LocalReport.Refresh();
                    rvStuInfo.LocalReport.SubreportProcessing += new
                    SubreportProcessingEventHandler(DemoSubreportProcessingEventHandler);
                }
            }
        }

        void DemoSubreportProcessingEventHandler(object sender, SubreportProcessingEventArgs e)
        {
            IList<string> str_student = e.Parameters[0].Values;
            DataTable picdt = null;
            try
            {
                picdt = ds.ReportImages(str_student[0].ToString());
            }
            catch
            {
                picdt = new DataTable("repStuInfoData_work_photo");
                DataColumn column;
                column = new DataColumn();
                column.DataType = System.Type.GetType("System.Byte[]");
                column.ColumnName = "photo";
                picdt.Columns.Add(column);
            }
            e.DataSources.Add(new ReportDataSource("repStuInfoData_work_photo", picdt));
        }

        private DataTable LoadData()
        {
            return JSONHelper.JsonToDataTable(Session["PrintDataSource"].ToString());
        }

     其中有几个关键点要特别注意:

     1.主报表和子报表的参数一定要设置一样。

     2.子报表的数据源必须在代码中通过设置SubreportProcessing 事件来添加。

     3.主报表和子报表的路径一定要设置正确。

     4.非常重要的一点,也是容易出错的一点,主报表和子报表的dataset name一定要设置正确,这个name值可以通过右键点击报表文件,在打开方式中选【xml编辑器】打开,看

    DataSet Name的值是什么就填什么,这个如果设置错了就无法读取到主报表的数据,或子报表无法显示。

  • 相关阅读:
    非类型模板参数(针对C++)
    继承(针对C++)
    进程中的线程共享的资源有哪些?
    关键字typename(针对C++)
    设计模式之——工厂模式
    利用多线程同步互斥来创建自己的资源锁
    SQL优化总结
    委托与泛型
    第5章 事件和数据回发机制
    jQuery权威指南_读书笔记
  • 原文地址:https://www.cnblogs.com/jinqi79731/p/2363728.html
Copyright © 2020-2023  润新知