具有 UnTyped 数据表源的 C# ReportViewer

标签 c# reportviewer untyped-variables

我检查了问题的历史记录、搜索 google 和其他结果,但仍然对 C# reportViewer 感到完全困惑。它似乎只想使用“类型化”数据集。正如许多其他人询问的那样,我没有看到真正的答案,也许新的帖子会带来新的东西。

在最简单的形式中,我有一个从数据库执行查询的业务对象。我知道生成的列是什么,并希望将其插入到根据需要正确“格式化”的特定报告中,而不是简单的列式转储。

由于查询返回一个“DataTable”对象,但没有已知的列被“键入”,所以我很困惑。

如其他帖子所述,如果我有一个包含 200 多个表、400 多个 View 和 200 多个存储过程的系统,我不想对所有内容进行类型转换。特别是如果我正在执行一个 NEW 查询,该查询是从某些 NEW 存储过程连接的各个表的结果。

做报告本不应该这么难。如果我输入了错误的列,或者 SUM()、COUNT() 或其他错误,那是我的错,但至少让我将未输入类型的表格放入报告中。

帮助...

最佳答案

DataTable的列不需要类型化,都可以使用默认的string。

我所做的是向我的项目添加一个数据集,并设计该数据集以匹配我的查询。我将所有列保留为字符串。在 RDLC 中,我使用此数据集作为我的数据源设置了一个表,严格用于设计时目的。

在运行时,我改为动态交换我生成的 DataTable 并确保它与设计时 DataSet 匹配(因为它们都是字符串,我只需要确保我的 DataTable 具有相同的列数并且列名匹配).

        DataTable dt = new DataTable();
        DataColumn dc = dt.Columns.Add();
        dc.ColumnName = "DataColumn1";

        dc = dt.Columns.Add();
        dc.ColumnName = "DataColumn2";

        dt.Rows.Add(new object[] { "Frank", 32 });

        this.reportViewer1.LocalReport.DataSources.Clear();
        this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1_DataTable1", dt));

        this.reportViewer1.RefreshReport();  

在运行时,ReportViewer 加载此 DataTable 作为其数据源并使用它来填充表。

这就是你想要的吗?

关于具有 UnTyped 数据表源的 C# ReportViewer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2009136/

相关文章:

ASP.NET ReportViewer Google Chrome CPU 使用率

c# - 如何在不丢失任何形状的情况下简化基本网格?

c# - 无法使用可选参数推断泛型类型

java - Jasper Report阿拉伯语查询问题

c# - C# .NET 中 Windows 窗体之间的值

compiler-construction - 无类型 Lambda 演算的函数式语言

string - Xquery ( XDMP-ARGTYPE error ) 函数输入的预期类型与实际类型不同

swift - 使用 @dynamicMemberLookup 访问 AnyCodable 值

c# - "Internal error in the expression evaluator"

c# - 将字符串分配给 HtmlElement 对象的 InnerHtml