我对报告服务报告查看器控件有一个非常具体的问题。
我感谢任何帮助。我在客户端使用Javascript是一个新手,但我必须在我的项目中使用它。
我需要在运行时检索嵌入在webpart中的报表查看器控件上的单个参数的当前值。我需要在客户端使用Javascript访问该值。
甚至可以这样做吗?报告查看器似乎没有呈现。
<asp:UpdatePanel ID="UpdatePanel1" runat="server" OnUnload="UpdatePanel_Unload">
<ContentTemplate>
<rsweb:ReportViewer ID="ReportViewer1" runat="server"
Font-Names="Verdana" Font-Size="8pt" Height="383px"
InteractiveDeviceInfos="(Collection)" ProcessingMode="Remote"
WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Width="757px"
SizeToReportContent="True">
</rsweb:ReportViewer>
</ContentTemplate>
</asp:UpdatePanel>
答案 0 :(得分:0)
关键是创建一个自定义数据属性,如此链接中指示的@Fil(http://html5doctor.com/html5-custom-data-attributes/)并从后面的代码传递然后访问$ .cache。并将reportviewer的clientID传递给javascript函数,以获取webpart子控件的当前实例。
<input type="hidden" id="<%= ASP_SSRS.ClientID %>_myDataState"
onchange="compareUnitValues(this.id, this.parentNode.id, '<%= ReportViewer1.ClientID %>', '<%= ASP_SSRS.ClientID %>', '<%= btnSendHiddenField.ClientID %>');" />
<script type ="text/javascript">
function compareUnitValues(elemt, parent, reportviewerID, value1, value2) {
var myDataUnit = $("#" + elemt),
parentObject = $("#" + parent),
reportviewerObject = $("#" + reportviewerID),
ssrs = $("#" + value1),
btnSend = $("#" + value2);
var myDataUnitValue = myDataUnit.val();
var myDataUnitJSON = jQuery.parseJSON(myDataUnitValue);
var currentmyDataUnit = myDataUnitJSON.currentUnit.objectId;
var sessioncurrentObjectId = document.getElementById('<%= hiddenCurrentObjectId.ClientID %>').value;
ssrs.val(myDataUnitValue);
var currentReportViewerParam = $("#" + reportviewerID).attr("data-report-param");
if (currentmyDataUnit != currentReportViewerParam) {
btnSend.trigger("click");
}
}
从代码背后创建自定义数据属性
ReportViewer1.Attributes.Add("data-report-param", parsedObjectId)