我使用MVC和MVC Report Viewer在VS2013中创建了一份SSRS报告。报告的数据源是一个类,它有几个返回不同类型对象列表的方法:
public class ReportModel
{
//known branchId for test purposes
private static int branchId = 12345;
public List<Top5Record> GetTop5()
{
return (from s in context.Salesmen
where s.branchId == branchId
select new Top5Record
{
Name = tr.Name,
Sales = tr.Sales
}).ToList();
}
}
现在我已经完成了测试,我需要这样做,所以branchId作为参数传入,而不是硬编码。由于我没有直接创建ReportModel类,我不知道如何在构造函数中传递branchId ...除非有一些我不知道的东西。
我的报告网址如下:
http://localhost/Branch/Report?branchId=1234
所以我最好从url中获取branchId并以某种方式将它传递给ReportModel类。这是可以做到的吗?
我到目前为止在SSRS参数上找到的所有信息(如this)似乎都围绕着从数据源检索数据后设计者级上使用的参数
如果我想要实现的目标是不可能的,那么有人会建议一些聪明的解决方法吗?我现在对这一个很难过。
答案 0 :(得分:0)
我能够弄清楚我必须做些什么来将参数传递给我的方法。事实证明,有一种本地方式可以做到这一点,我不知道。首先,我必须改变我的方法来获取参数:
public class ReportModel
{
public List<Top5Record> GetTop5(int branchId)
{
return (from s in context.Salesmen
where s.branchId == branchId
select new Top5Record
{
Name = tr.Name,
Sales = tr.Sales
}).ToList();
}
}
然后我必须转到我拥有报表查看器的页面并在设计模式下打开它。我选择了我想要的ObjectDataSource,并在属性菜单中单击了数据部分下的SelectParameters选项的省略号。从那里我点击&#34;添加参数&#34;,给它一个名字,并选择QueryString作为参数源。我还必须设置QueryStringField,在我的例子中是branchId。现在我可以将url queryString中的branchId传递给我的数据源类,一切都是正确的。我想知道为什么没有更多这方面的文件。