[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

原文地址:https://www.cnblogs.com/duanshuiliu/p/2777069.html