[AX]AX2012 嵌套使用Data contract class
使用Report data provider作为SSRS报表数据源时,可以通过Data contract class来定义报表的参数,Data contract类可以嵌套使用,这样可以在多个报表中重用一个Data contract。具体参看下面的代码:
[DataContractAttribute] public class SrsRDPNestedContractSample { boolean inclTax; } [DataMemberAttribute("InclTax")] public boolean parmInclTax(boolean _inclTax = inclTax) { inclTax = _inclTax; return inclTax; }
上面的代码定义了一个名为SrsRDPNestedContractSample的data contract类,定义了一个参数inclTax,我们在另一个Data contract类中嵌套重用它:
[DataContractAttribute] public class SrsRDPContractSample { AccountNum accountNum; CustAccountStatement accountStmt; SrsRdpNestedContractSample nestedContract; } [DataMemberAttribute("AccountNum")] public AccountNum parmAccountNum(AccountNum _accountNum = accountNum) { accountNum = _accountNum; return accountNum; } [DataMemberAttribute("CustAccountStatement")] public CustAccountStatement parmAccountStmt(CustAccountStatement _accountStmt = accountStmt) { accountStmt = _accountStmt; return accountStmt; } [DataMemberAttribute] public SrsRdpNestedContractSample parmNestedContract(SrsRdpNestedContractSample _nestedContract = nestedContract) { nestedContract = _nestedContract; return nestedContract; }
在SrsRDPContractSample Data contract类中我们直接定义了一个SrsRdpNestedContractSample的变量parmNestedContract,由方法parmNestedContract方法定义这个报表参数。在报表中要获得内嵌的data contract类定义的参数值也很简单:
...... // Get the parameters passed from runtime. // The base class methods read the SRSReportParameterAttribute attribute. dataContract = this.parmDataContract(); accountNumber = dataContract.parmAccountNum(); custAcctStmt = dataContract.parmAccountStmt(); // Get the parameters from the nested contract. nestedDataContract = dataContract.parmNestedContract(); boolInclTax = nestedDataContract.parmInclTax(); ......
更多内容详见http://msdn.microsoft.com/EN-US/library/gg731913.aspx。