【问题标题】:Is it possible to have report viewer in a popup window?是否可以在弹出窗口中使用报表查看器?
【发布时间】:2015-01-14 16:18:33
【问题描述】:

我有一个 ASP.NET 4.0 Web 应用程序。

应用程序有两个新页面:

  • openInvoice.aspx 包含一个网格视图。其中一列是 ID,它是一个链接按钮并调用“选择”命令。 "select" 将 datakeyname ID 传递给 reportviewer。
  • reportviewer.aspx 包含报表查看器、ObjectDatasource 和报表路径 (invoice.rdlc)。

截至目前,我可以在 gridview 中单击 ID 并完成重定向以转到报告。但我想做的是在 openInvoice.aspx 内的弹出窗口中打开 reportviewer.aspx,而不必进行重定向并强制用户按下浏览器中的后退按钮。

这可能吗?如果是这样,如何?

【问题讨论】:

  • 是的,如果你觉得很烂,为什么不试试看代码呢?
  • @ZoomVirus 完全是弗洛伊德式的失误......
  • 是的,这是可能的。查看锚标记的目标属性。你也可以很容易地使用模态窗口插件。
  • 您在发布此内容之前搜索过任何内容吗?弹出窗口有大量资源。您的另一个选择是打开一个新的浏览器窗口来显示报告。来吧,先做一些研究。
  • @taybriz 我做过研究吗?如果我不先上网,我就不会来这里。一切都适用于 formview、gridview 等,但不适用于 reportviewer。这正是我不在这里提问的原因,因为这里的人自鸣得意。

标签: c# asp.net gridview reportviewer


【解决方案1】:

应该很简单,因为您有一个专门的页面来保存报告查看器

我使用 jQuery 和 ColorBox。您只需要设置适当的选项。像这样:

function ViewPopUpReport(id) {
  var options = {
        iframe: true, 
        href  : null
        // there are many more parameters available, this is just the short list to keep it simple
      }
    options.href = 'reportviewer.aspx?id=' + id;

    $.colorbox(options);
}

这是踢球者。选择报告会导致回发。那必须停止。最简单的方法是禁用 Gridview 上的行选择并替换您自己的 onclick(注意:我在 VB 中工作,但您应该能够很容易地转换它):

Private Sub YourGridView_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles YourGridView.RowDataBound
  Dim gv As GridView = sender
  If e.Row.RowType = DataControlRowType.DataRow Then
    Dim pkey As String = gv.DataKeys(e.Row.RowIndex).Values("your_report_id")
    If pkey IsNot Nothing Then
      e.Row.Attributes.Add("onclick", String.Format("ViewPopupReport('{0}');", Server.UrlEncode(pkey)))
    End If
  End If
End Sub

如果禁用行选择不是一个选项,那么您可以通过添加一个未绑定的模板字段来执行类似的操作,该字段包含一个基本的 html 按钮或设置了 idrunat=server 属性的 img 图标,以便您可以找到控件在 RowDataBound 事件中,然后只需应用相同的 onclick 逻辑。这种方法的主要目的是确保您使用的控件不会触发回发。

(我不记得是否将 gridview 保留为可选仍然会触发 Select 回发,如果是这样,我认为这只是从视图弹出函数返回 false 或者可能调用 preventDefault 或取消气泡 - 这是一个而:) )

关于安全的另一件事。将 Pkeys 作为参数发送是不好的做法,至少,如果你必须以这种方式传递参数,它应该被加密。更好的选择是会话变量。我会把它留给你。祝你好运。

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多