背景:
- 我使用 ReportExecutionServiceSoap 接口通过用 C# 编写的 ASP.NET 应用程序呈现 SSRS 报告
- 我有一个工作渲染服务已经实现了切换项和分页功能,所以我对代码很有信心。
- 我正在尝试提供“交互式排序”功能。查看(非常有限的)文档,实现应该与切换功能非常相似。
这是我在渲染器中对 Sort 方法的实现:
using (var rsExec = new ReportExecutionService())
{
// Configure the service instance, specifiying the credentials and the sessionId
rsExec.Url = BuildSsrsServiceInvocationUri(m_reportServerUrl);
rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials;
rsExec.UseDefaultCredentials = true;
// Reload the execution context of the previous session
rsExec.ExecutionHeaderValue = new ExecutionHeader();
rsExec.ExecutionHeaderValue.ExecutionID = sessionId;
// Sort
string reportItemResult; // don't know what to do with this
ExecutionInfo2 execInfoResult; // don't know what to do with this
rsExec.Sort2(sortItem,
SortDirectionEnum.Ascending, // TODO: get this from method arg
clearExistingSorts,
PageCountMode.Estimate,
out reportItemResult,
out execInfoResult);
}
从我的控制器中,我像这样调用上述方法。sessionId是之前渲染的报表的ExecutionId,id对应用户点击的报表项:
// Sort the report
m_ReportRenderer.Sort(sessionId, id, clear);
最后我调用我的渲染器的 RenderReport 方法,期望获得按用户点击的列排序的报告输出:
// Render the report with the new sort order
var renderResult = m_ReportRenderer.RenderReport(sessionId, ImageRoot, actionScript);
问题:
- 我对 API 的理解正确吗?
- 如果没有,我做错了什么?
- 如果是这样,我做错了什么?