【问题标题】:Having trouble previewing reports预览报告时遇到问题
【发布时间】:2014-12-06 14:37:15
【问题描述】:

我在 VS2013 .Net 4.5 中创建了一个新的“报表服务器项目”。我添加了一个数据源,测试连接成功。我使用“使用嵌入在我的报表中的数据集”选项添加了一个数据集,该选项选择了先前创建的数据源。查询类型是带有单个文本参数的存储过程。在报告数据框中,我可以右键单击我的数据集,选择查询,然后执行存储过程。我看到一个正确填充了我的数据的网格。

但是,当我尝试创建和预览报告时,它失败了。我执行以下操作:

添加新报告。 从工具箱中将一张桌子放在上面。 开始将字段从我的 DataSet 拖到表上。 当我点击预览时,我看到以下内容

【问题讨论】:

  • 我尝试了以下示例,似乎没有“时间”问题。 rajbandi.net/…
  • 你用的是什么版本的IE?我有 IE 11 和 Chrome 39,只要日期最后有 12:00 时间,它们似乎就可以工作。在 IE 中,您可以按 F12,然后在仿真下尝试使用不同的“用户代理字符串”并查看哪些 IE 版本不适合您?通常我在 IE 可以工作但 Chrome 不能工作的地方遇到相反的问题。我过去必须这样做才能让 Chrome 正常工作rajbandi.net/…
  • 您可以做的解决方法是设置 ReportViewer.ShowParameterPrompts = False,然后使用您的自定义日期选择器设置报告参数,例如 - ReportViewer..SetParameters("yourParameter") 这样您的网页是控制参数的那个,而不是内置的 SSRS“丑陋”参数。

标签: reporting-services reportviewer


【解决方案1】:

这是一个“HACK”,但它会做你所要求的。

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication24._Default" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>

    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-2.1.1.js"></script>

    <script type="text/javascript">
        $(document).ready(function () {
            Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(pageLoadingHandler);

            function pageLoadingHandler() {
                fixParameters();
            }

            function fixParameters() {
                $("table[id^='ParametersGridReportViewer1']").find('input[type=text]').each(function () {
                    if (isDate($(this).attr("value"))) {
                        $(this).val($(this).val().substring(0, 10));
                    }
                });
            }

            function isDate(date) {
                return ((new Date(date) !== "Invalid Date" && !isNaN(new Date(date))));
            }

        });
    </script>


</head>
<body>

    <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

            <rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana" Font-Size="8pt" ProcessingMode="Remote" WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="1184px" ShowParameterPrompts="True">
                <ServerReport ReportPath="/Report Project1/Report1" />
            </rsweb:ReportViewer>

        </div>
    </form>
</body>
</html>

将“ReportViewer1”替换为您的报表查看器的名称。
这基本上将检查报告参数表中的所有输入字段,如果其中任何一个看起来像日期,那么它将在加载时删除时间。

编辑
添加了整个页面的代码。

【讨论】:

  • 添加了整个页面代码。后面没有代码。
  • 您是否尝试将代码从 fixParameters 移动到 pageloadinghandler 中,然后删除 fixParameters 函数?
  • 我以为你不想要时间戳?
  • 我别无选择。我上面列出的代码非常简单,因为它所做的只是从输入框中删除时间,因为它是在“页面加载”时生成的。除非您的报告具有级联参数,否则在编辑其他参数时它不应更改。您可以使用 PageRequestManager 上的 beginRequest 在将值发送回服务器之前添加回“12:00”。 msdn.microsoft.com/en-us/library/vstudio/…
猜你喜欢
  • 2011-03-30
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多