0

RDLC レポートに子プロパティの値を表示する方法は? 例えば:

public class Person
{
  public Address Address { get; set; }
}
public class Address 
{
  public string streetName {get;set;}
}

RDLC レポートに streetName の値を表示するには?

4

2 に答える 2

1

Brian Hartmanによるこのブログの投稿を読むとわかるように、VS2010 以降、LocalReport のネストされたクラスに変更がありました。

彼は属性 [Serializable()] を追加することを提案しています (該当する場合)。

クラスは次のようになります。

[Serializable()]
public class Person
{
  public Address Address { get; set; }
}
[Serializable()]
public class Address 
{
  public string streetName {get;set;}
}

編集:いくつかのコメントの後にコードを追加しました。次のようにクラスを実装してみてください。

[Serializable()]
public class Person
{
    private Address _address;
    public Address Address
    {
        get
        {
            if(_address == null)
                return new Address(string.Empty);
            return _address;
        }
        set
        {
            _address = value;
        }
    }
    [Serializable()]
    public class Address
    {
        private string _streetName;
        public string streetName 
        { 
            get
            {
                return _streetName;
            }
            set
            {
                _streetName = value;
            }
        }
        public Address(string streetName)
        {
            _streetName = streetName;
        }
    }
}

このようにして、常に値が返され、null になることはありません。

于 2013-01-18T15:34:04.997 に答える
0

すべてのプロパティについて、クラスで [Serializable()] を設定する必要があります

[Serializable()]
public class Person
{
  public Address Address { get; set; }
}
[Serializable()]
public class Address 
{
  public string streetName {get;set;}
  public SubAddress SubAddress{get;set;}
}

[Serializable()]
public class SubAddress
{
  public string DoorNo {get;set;}
}

レポート プロパティのコード タブのレポートでは、次のコードが使用されます。

 Public Function GetName(ByRef obj As Object) As String 
     If obj Is Nothing Then Return "na" 
     Else : Return obj.streetName 
     End If 
 End Function 

レポートフィールドは =Code.GetName(Fields!Address.Value) として取得します

于 2013-01-22T13:18:50.893 に答える