找回密码
 立即注册

QQ登录

只需一步,快速开始

yiliukeji

中级会员

16

主题

52

帖子

514

积分

中级会员

积分
514
yiliukeji
中级会员   /  发表于:2017-7-24 10:11  /   查看:3635  /  回复:7
本帖最后由 KearneyKang 于 2017-7-26 13:54 编辑

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

7 个回复

倒序浏览
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 如下图:

这样运行的结果就是:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
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[0].Values[0].Value.ToString();
                    string name = args.Report.Parameters[1].Values[0].Value.ToString();
                    //获取报表的参数值:
                    args.Data = bll.GetWaybillFeeDataRDL3(btime, name);
                    break;
                case "RdlReport矩表":
                    //string btime2 = args.Report.Parameters[0].Values[0].Value.ToString();
                    //string name2 = args.Report.Parameters[1].Values[0].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
5#
本帖最后由 yiliukeji 于 2017-7-24 18:08 编辑

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



回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2017-7-25 14:44:40
10#
请参考下面的demo

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
yiliukeji
中级会员   /  发表于:2017-7-25 16:18:52
11#
版主:
您好!
终于找到原因了,是因为虽然在设计数据源的时候设计的是 Object类型,但是在后台绑定的时候必须要用List的形式进行绑定,如果只给一个Model是不行的。虽然在前台不是用循环的。
我改为list之后,我用我原来的那种绑定方式也是可以的。
谢谢 版主,这几天的支持

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
KearneyKang讲师达人认证 悬赏达人认证
超级版主   /  发表于:2017-7-26 14:59:54
13#
对的,就是数据绑定的问题,当时我测试的时候您这个随车清单不可以。然后我就用的是上面绑定正确的格式进行了绑定,就可以。所以当时我就建议您根据上面正确的模式进行数据的绑定
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部