RLDC表达式编辑器自定义代码

时间:2011-03-10 16:35:46

标签: c# reportviewer report

我正在以本地模式制作.rldc报告,而我无法弄清楚数据的格式化方式。对于数据源中的一个项目字段,类型是具有单位长度和单位类型的类。我想知道在表达式编辑器中是否有可能访问我传入的对象的每个元素。或者我是否必须分别传入类的每个属性。如果我需要更好地解释一下,请告诉我。

这是我正在尝试访问的课程

public class Measurement
{
    float value;
    Unit unit;

    public float Value
    {
        get { return value; }
        set { this.value = value; }
    }
    public Unit Unit
    {
        get { return unit; }
        set { unit = value; }
    }
}

以下是我在文本框中的表达方式

<Value>=Fields!Weight.Value.Value</Value>

这是与此

相关的报告数据集部分
<Field Name="Weight">
   <DataField>Weight</DataField>
   <rd:TypeName>NewCalculator.Logic.Units.Measurement</rd:TypeName>
</Field>

由于

1 个答案:

答案 0 :(得分:2)

报表生成器渲染具有属性的对象没有问题 - 但是您不会获得智能感知支持。这在报告程序集的版本10中不起作用。

指定字段:

<Field Name="SomeClass"><DataField>SomeClass</DataField></Field>

获取值(假设您的SomeClass具有Id属性):

<Value>=Fields!SomeClass.Value.Id</Value>

甚至

<Value>=Fields!SomeClass.Value.X.Y.Z.Id</Value>

如果您的类层次结构如此。

修改

假设您有一个班级Body

public class Body { public Measurement Weight { get; set; } ... }

如果您像这样绑定dataSource:

ReportDataSource rdsBodies = new ReportDataSource("Bodies",
  new Body[] { new Body(), new Body() });
localReport.DataSources.Add(rdsBodies);

并指定您的<DataSet>,如下所示:

<DataSet Name="Bodies">
  <Fields>
    <Field Name="Weight"><DataField>Weight</DataField></Field>
  </Fields>
  <Query>
    <DataSourceName>DS</DataSourceName>
    <CommandText>Bodies</CommandText>
  </Query>
</DataSet>

<Value>=Fields!Weight.Value.Value</Value>

如果位于ListTable

内,则应该正常呈现
<DataSetName>Bodies</DataSetName>