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

时间:2014-10-27 17:59:33

标签: c# asp.net sql-server-2012 query-string sql-server-data-tools

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

请注意: 对于报告中的参数,我设置了默认值列表,并且还定义了可用的值集。现在,当我尝试从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&amp; pm1 = test2&amp; pm1 = test3。 但是这种方法不被业务所接受,并且希望能够通过昏迷本身来分离价值。

请提前帮助,谢谢。)

1 个答案:

答案 0 :(得分:0)

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

string qryParams() = split(queryString, ",");

for each qryParam in qryParams
    pb1.values.add(qryParam);
next

您正在做的是在其中添加一个带逗号的参数,而不是添加多个参数。