通过POST将参数传递到iframe中的SSRS时出错

Error when passing parameters to SSRS in an iframe via POST

本文关键字:中的 SSRS 出错 iframe POST 参数传递 通过      更新时间:2023-09-26

我正在尝试创建一个简单的概念验证应用程序,该应用程序使用自定义界面进行参数选择,然后将这些参数传递到SharePoint 2010上托管的SSRS报告。我希望报告在同一页上,所以我把它放在<IFRAME>中。对于这个POC,我所做的就是通过一个简单的文本字段收集一个项目UPC——最终我会使用一些JavaScript代码来做一些更花哨的事情,比如验证,但现在我只想让参数传递生效。(我知道我可以通过将其作为.NET应用程序编写并使用报表查看器控件来实现这一点,但我希望尽可能避免任何托管代码,以使事情变得更简单。)

如果我在查询字符串中使用UPC参数动态构建一个URL,并设置<IFRAME>src属性,那么一切都很好。但是,我更喜欢使用POST,这样我就可以避免URL过长的问题。基于这个SO问题,这里是我的代码:

function generateReport() {
    var frame = $("#report-viewer"),
        URL = $("#URL-field").val();
    var form = $('<form method="post" target="report-viewer" action="http://pigcentral/_vti_bin/reportserver?http://[link to report .rdl]"></form>');
    form.append('<input type="hidden" name="rs:Command" value="Render" />');
    form.append('<input type="hidden" name="rc:LinkTarget" value="main" />');
    form.append('<input type="hidden" name="rs:Format" value="HTML4.0" />');
    form.append('<input type="hidden" name="rs:Parameters" value="false" />');
    var URLField = $('<input type="hidden" name="URL" />');
    URLField.val(URL);
    form.append(URLField);
    $("#hidden-form").append(form);
    form.submit();
    $("#hidden-form").empty();
    frame.show();
}

当我触发POST时,报告查看器显示在<IFRAME>中,但有一条错误消息:

错误:有关此错误的详细信息,请导航到本地服务器计算机上的报表服务器,或启用远程错误。

我为报告所在的网站(恰好也是我托管此页面的网站)打开了远程错误,但没有得到任何进一步的信息。

有人知道为什么这不起作用,或者至少我可以去哪里获得更多关于错误的信息吗?谢谢

这很酷,从来没有想过这样做。从未尝试过将javascript转换为html,但我知道我在一本书中有一个例子,在表单中使用了"select"元素,其中包含"option"元素。html结构可能存在问题。你能先手动创建HTML,然后在编写javascript之前进行尝试,并确保它按设计工作吗?

我知道我在实验室里尝试过,它确实改变了价值观。我想你可以用javascript生成html并执行它,但我不确定。我从Brian Larson的《Microsoft SQL Server 2008 Reporting Services》一书中获得了这本书,节略:

< form id="frmRender" action=" (link to report location on reportservice)" method="post" target="self">
< select ID="rs:Format" Name="rs:Format" size=1>
 < option value="HTML4.0">HTML 4</option>
< option value="Image">TIff Image</option>
< /select>
< /form>