我一直在寻找这个答案,我已经获得了一些信息,这些信息似乎可以让ReportViewer Control自动提示报告的参数。我尝试过的所有东西似乎都不起作用。我已经让参数提示工作在Windows窗体上,但我无法让它在ASP.NET中工作
我想我只是问你能让Report-viewer的参数提示在ASP.NET中运行吗?如果是的话,怎么样?
我知道你可以手动完成,只是,我觉得你能不能自动编写ReportViewer Prompt为什么要自己编程呢?
编辑:这是本地处理btw。
答案 0 :(得分:4)
本地处理模式不支持提示参数。
在通过单击该对话框上的“帮助”按钮调用的文章Report Parameters Dialog Box (Visual Studio Report Designer)中,它在介绍性文本中说:
您在报告参数中指定的参数属性 对话框成为报告定义的一部分。有些属性是 仅供程序使用。与报告相反 在远程报表服务器上处理,本地处理的报表 没有用于选择或输入参数的参数输入区域 值。
一些测试显示我将使用为参数指定的默认值,除非您以编程方式修改它们。我找不到关于这个设计决定的解释。如果您想使用本地处理,并提示用户输入,我建议您遵循以下解决方案:
我将报告嵌入ReportViewer Control,您可以将其放在页面或表单上,并将自定义输入控件添加到该页面或表单以收集报告参数。在代码隐藏文件中,您将使用以下代码传递参数值:
List<ReportParameter> parameterList = new List<ReportParameter>();
List<string> selectedProductTypes = listboxProductTypes.GetSelectedValues();
ReportParameter productTypes = new ReportParameter("ProductTypes", selectedProductTypes.ToArray(), false);
ReportParameter username = new ReportParameter("Username", "<current user>", false);
parameterList.Add(productTypes);
parameterList.Add(username);
reportViewer.LocalReport.SetParameters(parameterList);
在此示例中,您可以看到如何传递多值参数,其值取自多选ListBox。
答案 1 :(得分:2)
您还可以创建一个页面,其中包含用于收集参数输入的控件,将它们放入设置的会话变量中,然后转移到包含报表查看器的页面。
使用对象数据源并将参数源设置为Session。
您需要编写的唯一代码是填充会话变量。