在老式的Morphx报表弹出的对话框中,我们经常使用DataFieldGroup对报表的提示参数进行分组,在SSRS报表中又该如何做呢?
对于使用RDP(Report data provider)作为数据源的报表,可以使用方法特性直接在Data contract class中对报表参数做分组。
[DataContractAttribute, SysOperationGroupAttribute("AccountsGroup", "@SYS313802", "1", FormArrangeMethod::Vertical), SysOperationGroupAttribute("TaxGroup", "@SYS130006", "2")] public class SrsRDPContractSample { AccountNum accountNum; CustAccountStatement accountStmt; boolean inclTax; } [DataMemberAttribute("AccountNum"), SysOperationGroupMemberAttribute("AccountsGroup"), SysOperationDisplayOrderAttribute("1")] public AccountNum parmAccountNum(AccountNum _accountNum = accountNum) { accountNum = _accountNum; return accountNum; } [DataMemberAttribute("CustAccountStatement"), SysOperationGroupMemberAttribute("AccountsGroup"), SysOperationDisplayOrderAttribute("2")] public CustAccountStatement parmAccountStmt(CustAccountStatement _accountStmt = accountStmt) { accountStmt = _accountStmt; return accountStmt; } [DataMemberAttribute("InclTax"), SysOperationGroupMemberAttribute("TaxGroup"), SysOperationDisplayOrderAttribute("1")] public boolean parmInclTax(boolean _inclTax = inclTax) { inclTax = _inclTax; return inclTax; }
在上面的Data contract class类SrsRDPContractSample中使用SysOperationGroupAttribute特性定义了两个报表参数组,分别是“AccountsGroup”和“TaxGroup”,在随后的参数方法中使用SysOperationGroupMemberAttribute特性指定参数所属的报表参数组,比如accountnum参数贝放到了“AccountsGroup”参数组,SysOperationDisplayOrderAttribute特性则是指定参数在参数组中的显示顺序。上面代码的显示效果如下:
另外一种方法是直接在Visual studio中直接创建报表参数组,把报表的参数拖入到相应的参数组中,详见http://msdn.microsoft.com/EN-US/library/gg731925.aspx,和上面不同的是它支持参数组的嵌套。按照MSDN的说明,会优先使用VS定义的参数组,但是在我的测试中使用MenuItem运行SSRS报表时总是显示Data contract class定义的参数组,原因不明。