zoukankan      html  css  js  c++  java
  • 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的值是什么就填什么,这个如果设置错了就无法读取到主报表的数据,或子报表无法显示。

  • 相关阅读:
    无重复字符的最长子串
    最长公共前缀
    项目开发的 工程化
    包管理 import debug 模块管理 module
    Third Party Browser Drivers NOT DEVELOPED by seleniumhq
    任何不看源码的代码引入都是存在定时爆炸的可能
    博客数计数
    lineage 世系 血缘 容错机制 DAG
    查源码分析 游标 写 需要 cursors 一切不看源码的代码引入都是定时炸弹的启动
    8核 16g 及时释放内存空间
  • 原文地址:https://www.cnblogs.com/jinqi79731/p/2363728.html
Copyright © 2011-2022 走看看