liushutao 发表于 2015-11-26 17:29:00

后台请求取不到值

function getViewer() {
            if (viewer && viewer.destroy) {
                viewer.destroy();
                viewer = null;
            }
            viewer = GrapeCity.ActiveReports.Viewer({
                element: '#viewer',
                reportService: {
                  url:"~/Service/VM/EvcDataPackage.ReportService.asmx"
                },
                uiType: isPC() ? 'desktop' : 'mobile',
                availableExports: ["Pdf", "Word", "Image", "Xls"],
                reportLoaded: function () {

                },
                documentLoaded: function () {
                  $("#BtnSearch").removeAttr("disabled");
                  $("#BtnSearch").html('<i class="fa fa-search"></i>查 询');
                  $("#BtnSearch").css("cursor", "pointer");
                                 },
                error: function (error) {
                  console.log("error");
                }
            });

            return viewer;
      }
      var _rpt = "Reports/VM/原始数据包查询.rdlx";

      var reportsButtons = $('#BtnSearch');
      reportsButtons.bind('click', function (ev) {
            ev.stopImmediatePropagation();
            var target = $(ev.target);
         
            var reportOption = {
                id: _rpt,
                parameters: [
                         { name: 'KeyValue', value: $("#KeyValue").val() },
                         { name: 'BeginTime', value: $("#sAppDate").val() },
                         { name: 'EndTime', value: $("#eAppDate").val() },
                         { name: 'OrderByDesc', value: $('#hideSortWay').val() },
                         { name: 'InputDesc', value: $('#InputDesc').val() },
                         { name: 'Type', value: $('#hideType').val() }
                ]
            };
            $("#BtnSearch").attr("disabled", "disabled");
            $("#BtnSearch").html('<i class="fa fa-search"></i>查询中');
            $("#BtnSearch").css("cursor", "default");
            getViewer().option('report', reportOption);

      });
后台:
protected override object OnCreateReportHandler(string reportPath)
      {
            switch (reportPath)
            {
                case "Reports/VM/原始数据包查询.rdlx":
                  PageReport definition1 = (PageReport)base.OnCreateReportHandler("Reports/VM/原始数据包查询.rdlx");
                  definition1.Document.LocateDataSource += new LocateDataSourceEventHandler(InitDataSource);
                  return definition1;
                default:
                  return base.OnCreateReportHandler(reportPath);

            }
      }
base.Context.Request["BeginTime"]; 取不到值

liushutao 发表于 2015-11-26 17:38:00

{&quot;d&quot;:{&quot;__type&quot;:&quot;GrapeCity.ActiveReports.Web.Models.SetParametersResult&quot;,&quot;ParameterCollection&quot;:null,&quot;Error&quot;:{&quot;Description&quot;:&quot;Too much parameters&quot;,&quot;ErrorCode&quot;:11},&quot;Token&quot;:&quot;9e303d43-dad6-49d7-85ce-37383982e1dc&quot;}}

frank.zhang 发表于 2015-11-27 10:09:00

您好,

var reportOption = {
                id: _rpt,
                parameters: [
                         { name: 'KeyValue', value: $(&quot;#KeyValue&quot;).val() },
                         { name: 'BeginTime', value: $(&quot;#sAppDate&quot;).val() },
                         { name: 'EndTime', value: $(&quot;#eAppDate&quot;).val() },
                         { name: 'OrderByDesc', value: $('#hideSortWay').val() },
                         { name: 'InputDesc', value: $('#InputDesc').val() },
                         { name: 'Type', value: $('#hideType').val() }
                ]
            };

这个里面的参数,作为报表的参数进行添加,添加的位置是
GrapeCity.ActiveReports.PageReport _reportDef = XXX
_reportDef.Report.ReportParameters

不会添加的到Context的Request,这个是URL请求的参数。

liushutao 发表于 2015-11-27 10:28:00

definition1.Document.LocateDataSource += new LocateDataSourceEventHandler(InitDataSource);
如果在InitDataSource方法里怎么取值
publicvoid InitDataSource(object sender, LocateDataSourceEventArgs args)
      {
            Dictionary<string, string> dc = new Dictionary<string, string>();
          string beginTime=base.Context.Request["BeginTime"]; 取不到值

frank.zhang 发表于 2015-11-27 11:38:00

您好,

这个参数必须在创建PageReprot的时候拿到,如果您在InitDataSource中使用,可以设置一个全局的变量进行参数的传递。

liushutao 发表于 2015-11-27 14:22:00

_reportDef.Report.ReportParameters,试验了这种方法也取不到值

frank.zhang 发表于 2015-11-27 14:54:00

您好,

这个问题经过电话沟通,和之前给您的真分页传递参数的方式是一致的,您可以参考下。

liushutao 发表于 2015-11-27 15:14:00

我加上参数之后直接报错了

liushutao 发表于 2015-11-27 16:32:00

id: reportid + &quot;?totalpage=-1&amp;currentpage=0&amp;p1=&quot; + $(&quot;#Text1&quot;).val() + &quot;&amp;p1=&quot; + $(&quot;#Text2&quot;).val(),

frank.zhang 发表于 2015-11-27 16:34:00

您好,

根据电话沟通的结果是0731后缀的那个文件,调用参数的代码是
      var reportsButtons = $('#btnReport1');
      reportsButtons.bind('click', function (ev) {
            ev.stopImmediatePropagation();
            reportsButtons.removeClass('active');
            var target = $(ev.target);
            target.addClass('active');
            var page = new Number($(&quot;#page-control&quot;).val());
            $(&quot;#page-control&quot;).val(page-1);
            var reportOption = {
                  id: target.attr('data-bind'),
                        parameters: [
                        {
                            name: 'PageNum',
                            value: page-1
                        }]

            };
            reportsButtons.prop('disabled', true);
            viewer.option('report', reportOption);
      });
页: [1]
查看完整版本: 后台请求取不到值