ReportViewerコントロールとAjax UpdatePanel
-
03-07-2019 - |
質問
Ajax UpdatePanel内からMicrosoft Report Viewerコントロール(Web)を動作させる方法を見つけた人はいませんか?
解決
実際に唯一の方法は、iircのレポートでiframeを作成することです。ただし、この投稿はこちらで修正する方法があると主張する男いくつかのコード。更新パネルにレポートを表示する必要がなかったので、これを試してさえいました。たとえば、レポートがリクエストされたとき、レポートだけで新しいウィンドウを開きます。私のユーザーはとにかくそれが好きです。
他のヒント
iを使用してこのバグを修正しました
Microsoft Report Viewer 2010再頒布可能パッケージ from:
次のようにWeb設定を変更します
from
<assemblies> <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> </assemblies>
<assemblies>
<add assembly="Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
<add assembly="Microsoft.ReportViewer.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
</assemblies>
to
<assemblies>
<add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
これをランタイムに追加
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportViewer.WebForms" publicKeyToken="b03f5f7f11d50a3a"/>
<bindingRedirect oldVersion="9.0.0.0-9.1.0.0" newVersion="10.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
実際に試したことはありませんが、コントロールはすぐには機能しないと確信しています。非常に複雑になるため、追加のJavaScriptをロードする必要があると確信しています。パネルを更新する前にそれらをロードする必要があるかもしれません。
以前の投稿で言及した最新リリース(2010)が問題を修正していることも確認できます。また、AsyncRendering = Falseを明示的に設定する必要がなくなります。ウェブ上にある他の提案では、そのプロパティにその値を設定するように言っているため、これについて言及しています
例は次のとおりです。
<asp:Button ID="Button1" runat="server" OnClick="ViewReport_Clicked" Text="View Report" SkinID="ButtonA" />
<asp:UpdatePanel ID="TFD_UP" runat="server">
<ContentTemplate>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" SizeToReportContent="True"
Height="202px" Width="935px" Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos="(Collection)"
WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" Visible="false">
<LocalReport ReportPath="Reports\Report4.rdlc">
<DataSources>
<rsweb:ReportDataSource DataSourceId="SqlDataSourceArchiSpecs" Name="Proc_TechFilesDownloadsDataSetParent" />
</DataSources>
</LocalReport>
</rsweb:ReportViewer>
<asp:SqlDataSource ID="SqlDataSourceArchiSpecs" runat="server" ConnectionString="<%$ ConnectionStrings:ArchiSpecsDBConnectionString %>"
SelectCommand="PROC_TECHNICALFILES_DOWNLOAD_DETAILS" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="supId" Type="Int32" />
<asp:Parameter Name="startDate" Type="DateTime" />
<asp:Parameter Name="endDate" Type="DateTime" />
</SelectParameters>
</asp:SqlDataSource>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
所属していません StackOverflow