从报告 Controller 对象中,我试图弄清楚如何确定用户是否已取消 SSRS 报告对话框屏幕或者他们是否单击了“确定”。
在 AX 中,我试图编写一个 Controller ,它将执行同一报表对象的两种不同设计,两者都将使用相同的约定(参数)。到目前为止我有这段代码:
cusController controller;
cusContract contract;
//Run Format 1
controller = new cusController();
controller.initController(_args);
controller.parmReportName(ssrsReportStr(cusReport, Format1));
controller.parmShowDialog(true);
controller.startOperation();
//Run Format 2
contract = controller.parmReportContract().parmRdpContract() as cusContract;
contract.parmFormat(cusReportFormat::Format2);
controller = new cusController();
controller.initController(_args);
controller.parmReportName(ssrsReportStr(cusReport, Format2));
controller.parmShowDialog(false);
controller.parmReportContract().parmRdpContract(contract);
controller.startOperation();
当用户输入参数并单击“确定”时,上述效果完美。但是,当用户点击“取消”时,第一个报告会取消,但由于第二个报告具有 parmShowDialog(false),因此它不知道第一个报告已被取消。关于如何从第一份报告中捕获取消有什么想法吗?
最佳答案
根据您的 Controller 类扩展的内容,我认为您会执行类似的操作。我见过很多不同的方式:
SysOperationStartResult result;
// Method 1
result = controller.startOperation();
if (result == SysOperationStartResult::Started ||
result == SysOperationStartResult::AddedToBatchQueue)
{
info("They clicked ok");
}
// Method 2
if (controller.prompt())
{
controller.run();
info("They clicked ok");
}
关于axapta - 获取SSRS参数形式的对话框结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35276515/