1

我在 VS 2010 报表设计器中制作报表,数据的主要来源是Lines实体。但我需要另一个实体的额外字段Parts。所以我添加了一个带有额外属性的部分 Line 类,如下所示:

public partial class Line
{
    public string ShelfLocation
    {
        get
        {
            using (RSContext rs = new RSContext())
            {
                return rs.Parts.First(x => x.Code == this.Part).ShelfLocation;
            }
        }
    }

问题是我仍然无法从报表设计器中看到这个额外的字段:

在此处输入图像描述

我怎样才能在不创建另一个视图的情况下实现这一点?

提前谢谢了。

编辑 1(都在同一个命名空间中):

在此处输入图像描述

4

3 回答 3

1

我不知道是否有更好的解决方案,但暂时我将其手动添加到报告中并且它有效:

<Fields>    
...
    <Field Name="ShelfLocation">
          <DataField>ShelfLocation</DataField>
          <rd:TypeName>System.String</rd:TypeName>
   </Field>
</Fields>
于 2012-04-27T15:57:55.863 回答
0

您确实需要确保两个类都在同一个命名空间中。

您可以考虑创建一个 Line 类型的对象并验证您是否可以看到您添加的新属性:

var testLine = new Line();
testLine.ShelfLocation  // <-- Does ShelfLocation show up as a valid property? Do your other properties like Debit, Id, etc. also show up?
于 2012-04-27T15:20:21.107 回答
0

我对 Linq2Sql 有完全相同的问题。自定义分部类的所有属性在报表设计器中均不可见。

解决问题

  1. 打开 *.dbml 的属性对话框并清除“自定义工具”属性。*.designer.cs 文件随即消失。
  2. 使用“预构建事件”中的 sqlmetal.exe 手动生成 *.designer.cs

    sqlmetal /namespace:"$(ProjectName)" /code:"$(ProjectDir)DataModel.designer.cs" "$(ProjectDir)DataClasses1.dbml"

在这些操作之后,附加属性被成功识别。

于 2016-08-23T08:14:51.553 回答