Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在报表中使用窗体控件属性?_C#_Database_Visual Studio_Report - Fatal编程技术网

C# 如何在报表中使用窗体控件属性?

C# 如何在报表中使用窗体控件属性?,c#,database,visual-studio,report,C#,Database,Visual Studio,Report,我正在尝试为学校管理系统开发一个简单的数据库前端,我正在使用ReportViewer来显示报告中的一些数据,但是我想在报告中显示一些数据,这些数据不在数据库中,而是在UI中作为用户输入(想想myTextBox.Text)!如何做到这一点 哦,我的ReportViewer的格式与我想使用的用户输入字段的格式不同,让两个表单一起通信并没有问题,但如何将其中一个表单(控件属性)中的数据获取到报表中 我使用的是Visual Studio 2013,C#,数据库是MS Access.accdb 谢谢。如果

我正在尝试为学校管理系统开发一个简单的数据库前端,我正在使用ReportViewer来显示报告中的一些数据,但是我想在报告中显示一些数据,这些数据不在数据库中,而是在UI中作为用户输入(想想myTextBox.Text)!如何做到这一点

哦,我的ReportViewer的格式与我想使用的用户输入字段的格式不同,让两个表单一起通信并没有问题,但如何将其中一个表单(控件属性)中的数据获取到报表中

我使用的是Visual Studio 2013,C#,数据库是MS Access.accdb


谢谢。

如果我正确理解您的问题:您首先将用户带到带有一些输入控件的页面。当用户输入一个值并提交表单时,您将用户重定向到一个报告页面,该页面将显示用户输入的数据以及数据库中的其他数据。如果这是真的,我将帮助您:

您可以通过各种方式在页面之间传递信息,其中一些 取决于重定向的发生方式。以下选项是 即使源页面位于不同的ASP.NET Web中,也可用 来自目标页的应用程序,或者如果源页不是 ASP.NET Web表单页:

  • 使用查询字符串
  • 从源页面获取HTTP POST信息

    仅当源页面和目标页面位于同一ASP.NET Web应用程序中时,以下选项才可用

    • 使用会话状态
    • 在源页面中创建公共属性,并访问目标页面中的属性值
    • 从源页面中的控件获取目标页面中的控件信息
资料来源:

编辑:如果使用windows窗体,以下内容可能会有所帮助。我通常不使用WinForms,因此请查看源链接以了解更多详细信息:

在接收表单上创建一个方法来处理接收到的数据,如下所示:

internal void LoadCustomData(CustomClass customObject)  
{  
    // Update the local DataSet with the data in customObject     
}  
在输入表单上调用此方法,并在接收表单上调用Show()方法,如下所示:

private void customersDataGridView_DoubleClick(object sender, EventArgs e)
{
    // Get data from the input control 
    CustomObject data;

    // Pass the data to receiving form
    ReceivingForm reportForm = new ReceivingForm();
    reportForm.LoadCustomData(data);
    reportForm.Show();
}

来源:

我想我找到了解决办法! 使用报表参数只是一个简单的问题。应按如下方式使用:

假设我的主窗体(MyForm)包含一个文本框(myTextBox),我希望在ReportViewer组件(myReportViewer)上显示的报表(myReport.rdlc,客户端报表)中的某个位置打印它的值

我要做的第一件事是向myReport添加一个报告参数。在报表设计器中,在“报表数据”选项卡(最左侧面板)中,我单击“新建”>“参数”,然后填写参数的详细信息(名称、类型、允许空值、默认值等),比如说,我将其命名为paramText,类型为Text

然后在报表设计图面中,我们设置了应该保存数据的字段表达式,如下所示:

=Parameters!paramText.Value
现在,在我们的C代码中,我刚刚将以下代码添加到myFome#u加载事件中,以将myTextBox中的文本与paramText关联起来:

myReportViewer.LocalReport.SetParameters(new ReportParameter("paramText", myTextBox.Text));
就是这样,myTextBox中显示的文本将显示在myReport中定义的某个位置!只要您在设置参数时尊重属性的类型,就可以对任何WinForm控件或属性执行此操作

如果ReportViewer是另一种形式,比如我的case,我只需公开myTextBox(访问方法)的Text属性,并在另一种形式中使用它

注意:确保包括:

using Microsoft.Reporting.WinForms;

谢谢你的回答。我认为您理解这个问题,但是,正如我所指出的,我并不是在寻求“两种形式的沟通”问题的解决方案,我希望将表格中的数据写入报表!我的应用程序是WinForms桌面应用程序而不是web应用程序!还有其他建议吗?遗憾的是,它仍然没有抓住要点,您建议我使用表单控件中的数据更新数据库,但这不是我需要做的。我需要直接访问报表中的表单控件!欢迎任何其他建议!我不是建议用这些数据更新数据库。但是,您可能需要使用从输入中获得的新数据更新从数据库中获取的数据对象。如果您不想这样做,那么必须将两个数据结构传递给第二个表单,第一个表单包含来自db的数据,第二个表单(CustomObject)包含来自输入的本地数据。此时,这两种数据结构都将是本地数据,不会向数据库传输数据。希望这能让事情澄清一点。我找到了一个包含报表参数的解决方案,我将其作为答案发布,感谢您的努力。