gpt4 book ai didi

具有 UnTyped 数据表源的 C# ReportViewer

转载 作者:行者123 更新时间:2023-11-30 16:35:15 24 4
gpt4 key购买 nike

我检查了问题的历史记录、搜索 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com