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