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

FastReport CompilerException:OperationSupplies数据源注册与使用问题

解决FastReport中嵌套数据源OperationSupplies的CompilerException错误

问题分析

出现FastReport.Utils.CompilerException: (Cell191): Error CS0103: The name 'OperationSupplies' does not exist in the current context错误的核心原因是嵌套数据源的注册方式错误,同时报表中对数据源的引用路径不符合FastReport的嵌套数据源规则。

解决方案

1. 修正数据源注册逻辑

不需要循环逐个注册每个Operation的OperationSupplies集合,FastReport的RegisterData方法会自动识别父对象中的嵌套集合属性。删除原代码中的循环注册部分,仅保留父数据源的注册:

// 仅注册父数据源,FastReport会自动识别嵌套的OperationSupplies集合
web.Report.RegisterData(model, "Operations");
// 移除以下错误的循环注册代码
// foreach (var operation in model)
// {
//     web.Report.RegisterData(operation.OperationSupplies, "Operations.OperationSupplies");
// }

2. 确保模型类结构正确

确认你的Operation模型类中包含OperationSupplies属性,类型为集合类型(如List<OperationSupply>),示例模型结构:

public class Operation
{
    public int Id { get; set; }
    public int AdmissionPatientId { get; set; }
    public string AdmissionPatientName { get; set; }
    public string OperationName { get; set; }
    public string OperationCode { get; set; }
    // 嵌套的子集合,必须是集合类型才能被FastReport识别为嵌套数据源
    public List<OperationSupply> OperationSupplies { get; set; }
}

public class OperationSupply
{
    public string Medicine { get; set; }
    public string Description { get; set; }
    public string Route { get; set; }
    public int Quantity { get; set; }
}

3. 修正报表中的数据源引用

在报表设计器中,确保单元格的表达式使用父数据源+子数据源的完整路径,例如:

  • 错误写法:[OperationSupplies.Medicine]
  • 正确写法:[Operations.OperationSupplies.Medicine]

你提供的XML数据源定义已经正确将OperationSupplies设置为Operations的嵌套数据源,无需修改这部分配置。

4. 验证数据源注册结果

可以在代码中添加验证代码,确认嵌套数据源是否被正确识别:

var childDs = web.Report.GetDataSource("Operations.OperationSupplies");
if (childDs != null && childDs.Enabled)
{
    // 嵌套数据源注册成功,可添加日志或调试逻辑
}

完整修改后的核心代码片段

web.Report.SetParameterValue("DoctorName", DoctorName);

// 仅注册父数据源,自动识别嵌套集合
web.Report.RegisterData(model, "Operations");

// 可选:验证嵌套数据源是否存在
var childDs = web.Report.GetDataSource("Operations.OperationSupplies");

web.Report.Prepare();

string export = Directory.GetCurrentDirectory() + $@"\wwwroot\export\{reportName}.pdf";
web.Report.Export(new PDFSimpleExport(), export);

内容的提问来源于stack exchange,提问作者tarık hasan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:38:09