在.aspx中的querystring中传递多个值以在运行时进行报告

本文关键字:运行时 报告 中的 aspx querystring | 更新日期: 2023-09-27 18:28:10

我正试图在VS2012中的ASP.Net web报表中的查询字符串中传递多个值。页面必须将多个值作为参数传递给报表。当我发送单个值(例如:abc)时,数据被正确地提取出来,但当我传递用逗号分隔的多个值(例如abc,xyz)时,它不会显示结果。这些由逗号分隔的值作为查询字符串传递到页面,然后我们读取它们并将其传递到报告。

请注意:对于报告中的参数,我设置了默认的值列表,还定义了可用的值集。现在,当我试图将值从c#代码传递给这个参数时,它仍然不接受我提供的值,而是从可用列表中获取所有值。我认为问题是,当选中"允许多个值"复选框时,SSRS不接受用逗号分隔的值。请告知

这就是我目前正在尝试的:

ReportParameter pb1 = new ReportParameter();
    if (!string.IsNullOrEmpty(Request.QueryString["pm1"])) { 
        pb1.Name = "PurchaseMaterial1";
        string[] strPb1 = Server.UrlDecode(Request.QueryString["pm1"]).Split(',');
        string value = Server.UrlDecode(Request.QueryString["pm1"]);
        if (strPb1.Length > 0)
        {
            int i = 0;
            value = "";
            while (i < strPb1.Length)
            {
                if (value == string.Empty)
                {
                    value = "'" + strPb1[i] + "'";
                }
                else
                {
                    value += ",'" + strPb1[i] + "'";
                }
                i += 1;
            }
        }
        pb1.Values.Clear();
        pb1.Values.Add(value);

使用逗号分隔参数的另一种选择是重复使用相同的参数,如:www.test.com/?pm1=test1&pm1=test2&pm1=测试3。但这种方法不被企业所接受,并且希望能够通过昏迷本身来分离价值观。

请帮忙,提前感谢:)

在.aspx中的querystring中传递多个值以在运行时进行报告

ReportParameter对象将字符串集合作为值。所以你想要的是这样的东西(我说VB,所以请接受我的道歉并相应地翻译):

string qryParams() = split(queryString, ",");
for each qryParam in qryParams
    pb1.values.add(qryParam);
next

您所做的是添加一个带逗号的参数,而不是添加多个参数。