我正在做大学项目。在那,他们想要一个真正的证书。为此,我计划将TextBox
字符串传递给报告。
我用googled在winform中传递参数。然后我逐步完成了这个过程。我实现了。
步骤:
1:在Visual Studio 2010中,打开您的 .rdlc文件,并打开“报告数据” 窗口(如果你看不到这个 窗口,转到“查看”菜单将其打开);
2:右键单击“参数”节点, 并添加一个新参数,即:命名它 “内容“;
3:在你的.rdlc文件中,添加一个文本框, 将其命名为tbContent,并设置其归档 表达:
=参数!content.Value
4:转到包含的表单文件 你的记者视图控制,并添加 以下代码:
this.reportViewer1.LocalReport.ReportEmbeddedResource
=“TestReport.Report1.rdlc”; ReportParameter rp = new ReportParameter(“content”, this.textBox1.Text); this.reportViewer1.LocalReport.SetParameters(新 ReportParameter [] {rp}); this.reportViewer1.RefreshReport();
5:然后你可以传递参数 从表单上的TextBox到.rdlc 文件;
我添加了using Microsoft.Reporting.WinForms;
程序集引用。
this.reportViewer1.LocalReport.ReportEmbeddedResource = "Report1.rdlc";
ReportParameter rp = new ReportParameter("content", this.textBox1.Text);
this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { rp });
this.reportViewer1.RefreshReport();
但它引发了异常:
本地处理异常是 未经处理的 this.reportViewer1.LocalReport.SetParameters(新 ReportParameter [] {rp}); 线。
以下是剪贴板中的完整错误:
Microsoft.Reporting.WinForms.LocalProcessingException was unhandled
Message=An error occurred during local report processing.
Source=Microsoft.ReportViewer.WinForms
StackTrace:
at Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
at Microsoft.Reporting.WinForms.LocalReport.SetParameters(IEnumerable`1 parameters)
at Report.Form1.Form1_Load(Object sender, EventArgs e) in D:\Jagadeeswaran\Project\Report\Report\Form1.cs:line 38
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)
at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
at System.Windows.Forms.Control.set_Visible(Boolean value)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at Report.Program.Main() in D:\Jagadeeswaran\Project\Report\Report\Program.cs:line 18
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: System.ApplicationException
Message=The report definition for report 'D:\Jagadeeswaran\Project\Report\Report\bin\Debug\~/Report1.rdlc' has not been specified
Source=Microsoft.ReportViewer.Common
StackTrace:
at Microsoft.Reporting.PreviewStore.GetCompiledReport(CatalogItemContextBase context, Boolean rebuild, Byte[]& reportDefinition, ControlSnapshot& snapshot)
at Microsoft.Reporting.LocalService.GetCompiledReport(CatalogItemContextBase itemContext, Boolean rebuild, ControlSnapshot& snapshot)
at Microsoft.Reporting.WinForms.LocalReport.EnsureExecutionSession()
InnerException: System.IO.DirectoryNotFoundException
Message=Could not find a part of the path 'D:\Jagadeeswaran\Project\Report\Report\bin\Debug\~\Report1.rdlc'.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at Microsoft.ReportingServices.StandalonePreviewStore.GetReportDefinition(ReportID reportId)
at Microsoft.Reporting.PreviewStore.GetCompiledReport(CatalogItemContextBase context, Boolean rebuild, Byte[]& reportDefinition, ControlSnapshot& snapshot)
InnerException:
答案 0 :(得分:3)
设置:
this.reportViewer1.ProcessingMode =
Microsoft.Reporting.WinForms.ProcessingMode.Local;
并改变这一点:
this.reportViewer1.LocalReport.ReportEmbeddedResource = "Report1.rdlc"
到
this.reportViewer1.LocalReport.ReportPath = "Report1.rdlc";
答案 1 :(得分:1)
为了防止出现这种情况,我在重新组织项目文件夹后遇到了同样的问题,从而更改了报告文件路径。我所要做的就是在ReportViewer的Choose Report ComboBox中重新选择报告,该报告可以从右上角访问。
答案 2 :(得分:0)
还要仔细检查您是否正确拼写了rdlc
文件名。例如,我的报告文件是ReportName.rdlc
,但我输入了this.reportViewer1.LocalReport.ReportPath = "ReportsName.rdlc";
答案 3 :(得分:0)
您可以很好地使用嵌入式,只是不要忘记在RDLC路径中包括名称空间。程序集名称空间以及所有可能的子名称空间都是必需的,作为报告的完整名称空间路径。
reportViewer1.LocalReport.ReportEmbeddedResource = "assemblyname.Report1.rdlc"
或
reportViewer1.LocalReport.ReportEmbeddedResource = "assemblyname.subnamespace.Report1.rdlc"
答案 4 :(得分:0)
我刚刚在“NuGet 包管理器控制台”中运行了 Install-Package Microsoft.SqlServer.Types
,一切正常。