javascript - 获取 URL 字符串形式的报告参数

标签 javascript jquery asp.net vb.net reporting-services

我有一个提供 SSRS 报告的应用程序。通过以下方式访问给定的报告:

https://reportserver.com/reportname

单击查看报表后,将使用用户定义的参数将回发提交到报表服务器。我需要获取这些用户定义的参数并将它们解析为 URL 字符串。

期望结果: https://reportserver.com/reportname?param1=foo¶m2=bar

我找到了this doc这让我更接近我需要的东西。这个方法应该允许我获取所有可见参数并自己解析它们,但我也需要隐藏参数

如何构建这个参数字符串?我们在前端使用 JavaScript/jQuery,因此可能可以在 POST 之前获取此客户端,但我也没有找到执行此操作的方法。

最佳答案

我成功了。公平警告:我是 ASP.NET 新手,因此这可能不是一个理想的解决方案。

我向报表查看器控件的代码后面添加了一个事件处理程序。这会查询执行日志,获取用户最近选择的参数。它意味着当单击名为“保存报告”的按钮时触发。如果您尝试使用 LoadPreRender 事件处理程序来处理此问题,它将在该行有机会插入数据库之前触发,从而为您提供用户第二个的结果最近的执行参数。

定义按钮(.ascx 文件)

  <asp:LinkButton ID="SaveReportButton" runat="server" title="Save this Report"></asp:LinkButton>

将事件处理程序添加到代码隐藏(.ascx.vb 文件)

Protected Sub SaveReportButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SaveReportButton.Click
  Dim conn As New SqlConnection(<connection string here>)
  Dim cmd As New SqlCommand("SELECT TOP 1 Parameters FROM [ReportServer].[dbo].[ExecutionLogStorage] WHERE <qualify on user, timestamp, etc. here>", conn)
  cmd.Parameters.AddWithValue(<query parameter here>)
  conn.Open()
  Dim result = cmd.ExecuteScalar()

  ' Prevents NullReferenceException from result.ToString() in case no result is found
  If (result IsNot Nothing)

    ' Redirect based on parameter string retrieved from log
    Response.Redirect(HttpContext.Current.Request.Url.AbsoluteUri & "?" & result.ToString())

  End If
  conn.Close()
End Sub

单击按钮时从 JavaScript 调用回发

<li>
  <a href=\'javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(<reference SaveReportButton with appropriate arguments>)\' id="SaveReportButton" title="Save Report">
  Save Report
  </a>
</li>

关于 WebForm_DoPostBackWithOptions()WebForm_PostBackOptions() 的文档很少,但一位同事已经这样做了,所以我效仿为了保持一致性 因为它有效。

关于javascript - 获取 URL 字符串形式的报告参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48917744/

相关文章:

javascript - 主干与 Angular : mobile webapp + memory management

javascript - 替代 fs.readFileSync()

c# - ASP.Net MVC 中模型启动的数据绑定(bind)(更新 UI)

javascript - 如何从 c# ext.net 调用 javascript

javascript - 缩放网站以打印在单个页面上

jQuery 如何检查数组中的所有元素是否具有特定类

javascript - 根据id从文本输入中获取 boolean 值

javascript - 同一页面上的多个嵌入式 YouTube 视频

c# - session 状态反模式(或一般的全局状态)

javascript - 使用 Web Audio API 在声音开始时添加静音