在.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。但这种方法不被企业所接受,并且希望能够通过昏迷本身来分离价值观。
请帮忙,提前感谢:)
ReportParameter对象将字符串集合作为值。所以你想要的是这样的东西(我说VB,所以请接受我的道歉并相应地翻译):
string qryParams() = split(queryString, ",");
for each qryParam in qryParams
pb1.values.add(qryParam);
next
您所做的是添加一个带逗号的参数,而不是添加多个参数。