将参数传递给SSRS业务对象类数据源

时间:2014-11-06 03:18:07

标签: c# asp.net-mvc-4 reporting-services visual-studio-2013 ssrs-2008

我使用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)似乎都围绕着从数据源检索数据后设计者级上使用的参数

如果我想要实现的目标是不可能的,那么有人会建议一些聪明的解决方法吗?我现在对这一个很难过。

1 个答案:

答案 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传递给我的数据源类,一切都是正确的。我想知道为什么没有更多这方面的文件。