报告中的自定义 c# 代码
Custom c# code in a Report
我正在使用对象填充报表。一切正常,如果我的成员是字符串,但是,我有几个成员,它们是 List<string>
。
当我将这些字段添加到报告(在设计器中,visual studio 2012)和 运行 报告时,它们显示为
'#Error'
查看报表的属性,我可以看到有一个 'custom code' 选项卡,为此我输入了以下方法将字符串列表转换为字符串数组。
public string[] GetListItems(List<string> intList)
{
var s = intList.ToArray();
return s;
}
然后当我尝试用表达式替换该字段并输入以下内容时:
=Join(Code.GetListItems(Fields!Aka.Value),",")
然后是 运行 报告,VS 无法使用以下内容构建:
Error 2 The Value expression for the textrun ‘Aka.Paragraphs[0].TextRuns[0]’ contains an error: [BC30456] 'GetListItems' is not a member of 'ReportExprHostImpl.CustomCodeProxy'.
Error 1 There is an error on line 0 of custom code: [BC30183] Keyword is not valid as an identifier.
谁能解释这是为什么?
那是C#代码。直接在报表中只能使用 Visual Basic。 C# 可用作外部 DLL。
如果您刚刚创建了一个报告并显示了一个错误代码,例如
BC30016 标签在方法之外无效。
在我的案例中,我的原因是我在 report1.rdlc 的代码 属性 中插入了随机数值
因此,要解决此类错误,请转到报告属性并从代码中删除该值。
对于那些不会创建的人来说,经历了实现第三方DLL的困难。更简单;但是,更复杂的解决方案如下。
为了总结解决方案,您可以创建 returns 报告可以轻松处理的值的属性。
在我的场景中,我有 2 个 classes:
public class Parent {
public Child { get; set; }
}
public class Child {
public string Name { get; set; }
}
我绑定到我的报告的类型是父类;但是,我需要访问 Child 中的名称 属性。换句话说,我需要做的是:
Parent.Child.Name
这是我 运行 遇到的与 OP 运行 相同的问题。由于我的项目(大学项目)的范围,我不能为第三方 dll 或编写自己的 dll 而烦恼...
所以我所做的是向 Parent
class 添加更多属性。
public class Parent {
public Child { get; set; }
public string ChildName { get => Child.Name; }
}
public class Child {
public string Name { get; set; }
}
通过向 Parent
添加一个额外的 属性,它具有 Reports 可以使用的类型,我现在可以通过我的 [=13= 轻松访问 Child
的名称]class.
当然这很乱;但是,我无法使用 complicated/time 消耗更多的 dll 解决方案。
我只希望我的导师能允许这个解决方案而不受惩罚...
我正在使用对象填充报表。一切正常,如果我的成员是字符串,但是,我有几个成员,它们是 List<string>
。
当我将这些字段添加到报告(在设计器中,visual studio 2012)和 运行 报告时,它们显示为
'#Error'
查看报表的属性,我可以看到有一个 'custom code' 选项卡,为此我输入了以下方法将字符串列表转换为字符串数组。
public string[] GetListItems(List<string> intList)
{
var s = intList.ToArray();
return s;
}
然后当我尝试用表达式替换该字段并输入以下内容时:
=Join(Code.GetListItems(Fields!Aka.Value),",")
然后是 运行 报告,VS 无法使用以下内容构建:
Error 2 The Value expression for the textrun ‘Aka.Paragraphs[0].TextRuns[0]’ contains an error: [BC30456] 'GetListItems' is not a member of 'ReportExprHostImpl.CustomCodeProxy'.
Error 1 There is an error on line 0 of custom code: [BC30183] Keyword is not valid as an identifier.
谁能解释这是为什么?
那是C#代码。直接在报表中只能使用 Visual Basic。 C# 可用作外部 DLL。
如果您刚刚创建了一个报告并显示了一个错误代码,例如 BC30016 标签在方法之外无效。 在我的案例中,我的原因是我在 report1.rdlc 的代码 属性 中插入了随机数值 因此,要解决此类错误,请转到报告属性并从代码中删除该值。
对于那些不会创建的人来说,经历了实现第三方DLL的困难。更简单;但是,更复杂的解决方案如下。
为了总结解决方案,您可以创建 returns 报告可以轻松处理的值的属性。
在我的场景中,我有 2 个 classes:
public class Parent {
public Child { get; set; }
}
public class Child {
public string Name { get; set; }
}
我绑定到我的报告的类型是父类;但是,我需要访问 Child 中的名称 属性。换句话说,我需要做的是:
Parent.Child.Name
这是我 运行 遇到的与 OP 运行 相同的问题。由于我的项目(大学项目)的范围,我不能为第三方 dll 或编写自己的 dll 而烦恼...
所以我所做的是向 Parent
class 添加更多属性。
public class Parent {
public Child { get; set; }
public string ChildName { get => Child.Name; }
}
public class Child {
public string Name { get; set; }
}
通过向 Parent
添加一个额外的 属性,它具有 Reports 可以使用的类型,我现在可以通过我的 [=13= 轻松访问 Child
的名称]class.
当然这很乱;但是,我无法使用 complicated/time 消耗更多的 dll 解决方案。
我只希望我的导师能允许这个解决方案而不受惩罚...