You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# WinForm(.NET 4.0)无数据库使用RDLC报表表格控件方法

无数据库实现RDLC报表多表格的方案(.NET Framework 4.0 WinForms)

嘿,刚好做过类似需求,不用数据库完全能搞定!咱们一步步来,操作起来很顺畅:

1. 创建强类型数据集(Strongly Typed DataSet)

这是最稳妥的方式,比弱类型DataSet更易维护:

  • 在你的WinForms项目上右键 → 添加 → 新建项 → 选择数据集(DataSet.xsd),命名比如ReportDataSet。
  • 打开数据集设计器,右键空白处 → 添加 → DataTable,命名为MultiTableData。
  • 给这个DataTable添加列:
    • 先加两个辅助列:TableId(int类型,用来区分10个表格)、RowIndex(int类型,区分每个表格的3行)
    • 再加7个数据列,比如Col1、Col2...Col7(类型根据你的需求选,string、decimal都可以)

2. 手动填充数据集数据

在PRINT子窗体的代码里,写个方法生成模拟数据(或者从你的业务逻辑取数):

private ReportDataSet GetReportData()
{
    var ds = new ReportDataSet();
    // 生成10个表格的3行数据
    for (int tableNum = 1; tableNum <= 10; tableNum++)
    {
        for (int rowNum = 1; rowNum <= 3; rowNum++)
        {
            var row = ds.MultiTableData.NewMultiTableRow();
            row.TableId = tableNum;
            row.RowIndex = rowNum;
            // 这里填充7列数据,替换成你的业务值即可
            row.Col1 = $"表格{tableNum}行{rowNum}列1";
            row.Col2 = $"表格{tableNum}行{rowNum}列2";
            row.Col3 = $"表格{tableNum}行{rowNum}列3";
            row.Col4 = $"表格{tableNum}行{rowNum}列4";
            row.Col5 = $"表格{tableNum}行{rowNum}列5";
            row.Col6 = $"表格{tableNum}行{rowNum}列6";
            row.Col7 = $"表格{tableNum}行{rowNum}列7";
            
            ds.MultiTableData.AddMultiTableRow(row);
        }
    }
    return ds;
}

3. 设计RDLC报表

打开你的report.rdlc,按以下步骤设置:

  • 首先添加数据集:在报表数据面板(没显示的话点视图→报表数据)→ 新建→数据集,选择刚才创建的ReportDataSet,数据源选MultiTableData。
  • 添加列表(List)控件到报表:这个列表用来按TableId分组,自动生成10个表格。
    • 选中列表,在分组面板里添加分组,分组依据选=Fields!TableId.Value,如果需要每个表格单独一页,勾选在组的每个实例之间分页。
  • 在列表内部添加表格(Table)控件:
    • 把表格调整为3行7列(对应你的需求)。
    • 把表格细节行(中间行)的7个单元格分别绑定到=Fields!Col1.Value到=Fields!Col7.Value。
    • 要是需要表头,就给表格加表头行写上列名;不需要的话直接删掉表头。
    • 确保表格的数据集绑定到MultiTableData,这样每个TableId分组都会生成一个3行7列的表格。

4. 在窗体中绑定数据集到ReportViewer

在PRINT子窗体的Load事件里写绑定代码:

private void PRINT_Load(object sender, EventArgs e)
{
    var reportData = GetReportData();
    // 清除原有数据源
    reportViewer1.LocalReport.DataSources.Clear();
    // 添加新数据源,名字要和RDLC里的数据集名字完全一致
    reportViewer1.LocalReport.DataSources.Add(
        new ReportDataSource("MultiTableData", reportData.MultiTableData));
    // 刷新报表
    reportViewer1.RefreshReport();
}

额外小贴士

  • 要是不想用分组,也可以创建10个独立的DataTable,每个填充3行7列数据,然后在RDLC里给10个表格分别绑定不同的DataTable,但这种方式维护起来比较麻烦,不如分组灵活。
  • 注意.NET Framework 4.0的ReportViewer控件版本要对应,避免出现兼容性问题。
  • 表格的样式(边框、字体、背景色)都可以在RDLC的表格属性里设置,甚至用表达式动态控制。

内容的提问来源于stack exchange,提问作者User0804

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:37:30