这应该是一个简单的过程,但现在它变成了烦人的问题。
我试图在 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);
请帮忙,提前非常感谢:)
在您的代码中,strPb1.Length 将始终大于 0。如果没有逗号 Split(',') 仍将返回包含原始字符串的数组。因此,您的初始值设置是不必要的。
QueryString 和 split() 本身似乎没问题。也许问题出在您的代码或您正在使用的查询字符串的其他地方。如果您要将逗号重新添加到字符串中,为什么要删除它们呢?
此外,使用逗号分隔参数的另一种方法是重复使用相同的参数。
www.test.com/?pm1=test1&pm1=test2&pm1=test3
string[] strPb1 = Request.QueryString.GetValues("pm1");
if(strPb1 != null && strPb1.Length > 0)
{
for(int i = 0; i != strPb1.Length; i++)
{
//Code here
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)