2

我为我的 aspx 项目使用了 Telerik 报告,在这个项目中我希望用户可以设置一些报告项目。为了实现这个目标,我使用参数并创建像 pic 1 这样的参数,在图 2 中是这个参数的属性,我在我的报告中使用它,如图 3,但至少当我运行我的项目时,我看到图 4 我的问题是:是我的代码错误,当我使用他们加载并在参数区域中显示的参数时,我如何在报告空间中设置我的报告项目我如何在报告的详细空间中显示它们?我的代码有什么问题?在此处输入图像描述 这是我的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using schduleing_report;//its my dll report

namespace telerikreporttest
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Report2 report = new Report2();

            var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
            instanceReportSource.ReportDocument = new schduleing_report.Report2();
            instanceReportSource.Parameters.Add("param", "hi it work");
            this.ReportViewer1.ReportSource = instanceReportSource;

            instanceReportSource.Parameters.Add("testparam", "textbox2 is work too");

            ReportViewer1.RefreshReport();

        }
    }
}
4

1 回答 1

2

当您定义了第一个参数,即“param”时,您选择了 MultiValue=True。因此,当您将参数的值直接读入文本框时 - 它会说出对象数组的类型。多值将使文本框接受多个值。

相反,如果您设置 MultiValue=false,该参数将始终只包含 1 个值,然后它将在您的报告中显示正确的值。

如果您需要在 param 参数上设置 MultiValue=true - 然后执行以下操作以将文本放入报告的文本框中:

  • 在设计器中 - 右键单击​​文本框。选择表达式
  • 在编辑表达式窗口中 - 添加以下表达式 - = Join(", ", Parameters.param.Value)

运行报告,现在您将正确的文本设置为文本框的值。

Join() 函数有 2 个参数。第一个是分隔符字符串,第二个是包含需要连接的值的对象数组。所以当MultiValue设置为true时,参数值就是object[]的值。因此,您需要使用 join() 函数将其转换为文本格式。

希望这可以帮助。

于 2013-06-16T18:26:08.157 回答