yiliukeji 发表于 2017-7-24 10:11:14

RDL报表 给多个数据源绑定值

本帖最后由 KearneyKang 于 2017-7-26 13:54 编辑

版主您好!
请教 在ActiveReportsService.asmx文件当中给报表的多数据源绑定数据问题
具体见附件,打开后,直接运行
例子。就在 home的 index


KearneyKang 发表于 2017-7-24 11:11:58

您好,我看了您发过来的代码。通过JS动态传递参数,不是您这写的。这等于就是一张参数报表只不过我们把传递参数的形式由原来的在报表里输入,变成了在JS里通过前台或者别的方式输入。
具体参考的博客如下:
http://blog.gcpowertools.com.cn/post/html5viewerParameter.aspx

yiliukeji 发表于 2017-7-24 11:20:10

版主,我可能没有描述清楚,
一个文件的数据源有两个 DataSet 分别为 TranInfoDs 和 GoodInfoPointDs,
在绑定的时候只能找到TranInfoDs ,是没有,GoodInfoPointDs 如下图:

这样运行的结果就是:


KearneyKang 发表于 2017-7-24 17:45:48

这样绑定应该可以
void Document_LocateDataSource(object sender, LocateDataSourceEventArgs args)
      {
            WaybillBLL bll = new WaybillBLL();
            string reportName = args.Report.PageReport.Document.Printer.DocumentName;
            switch (reportName)
            {
                case "RdlReport":
                  string btime = args.Report.Parameters.Values.Value.ToString();
                  string name = args.Report.Parameters.Values.Value.ToString();
                  //获取报表的参数值:
                  args.Data = bll.GetWaybillFeeDataRDL3(btime, name);
                  break;
                case "RdlReport矩表":
                  //string btime2 = args.Report.Parameters.Values.Value.ToString();
                  //string name2 = args.Report.Parameters.Values.Value.ToString();
                  //获取报表的参数值:
                  args.Data = bll.GetWaybillFeeDataRDL3("", "");
                  break;
                case "随车清单":
                  PrintListByPlanNoViewModel planView; List<PrintGoodsInfo> goodsList;
                  bool IsTrue = bll.GetTranSportGoodsList(out planView, out goodsList);
                  if (IsTrue)
                  {
                        if (args.DataSourceName == "InfoData")
                        {
                            if (args.DataSetName == "TranInfoDs")
                            {
                              args.Data = planView;
                            }
                        }
                        if (args.DataSourceName == "InfoData")
                        {
                            if (args.DataSetName == "GoodInfoPointDs")
                            {
                              args.Data = goodsList;
                            }
                        }
                  }
                  break;
                default:
                  args.Data = null;
                  break;
            }
      }

yiliukeji 发表于 2017-7-24 18:03:10

本帖最后由 yiliukeji 于 2017-7-24 18:08 编辑

版主:
您好!
不执行这一句话: 你运行demo的时候可以么?
if (args.DataSetName == "GoodInfoPointDs")
                            {
                              args.Data = goodsList;
                            }



KearneyKang 发表于 2017-7-25 14:44:40

请参考下面的demo

yiliukeji 发表于 2017-7-25 16:18:52

版主:
您好!
终于找到原因了,是因为虽然在设计数据源的时候设计的是 Object类型,但是在后台绑定的时候必须要用List的形式进行绑定,如果只给一个Model是不行的。虽然在前台不是用循环的。
我改为list之后,我用我原来的那种绑定方式也是可以的。
谢谢 版主,这几天的支持 :$

KearneyKang 发表于 2017-7-26 14:59:54

对的,就是数据绑定的问题,当时我测试的时候您这个随车清单不可以。然后我就用的是上面绑定正确的格式进行了绑定,就可以。所以当时我就建议您根据上面正确的模式进行数据的绑定
页: [1]
查看完整版本: RDL报表 给多个数据源绑定值