RDLC レポートに子プロパティの値を表示する方法は? 例えば:
public class Person
{
public Address Address { get; set; }
}
public class Address
{
public string streetName {get;set;}
}
RDLC レポートに streetName の値を表示するには?
RDLC レポートに子プロパティの値を表示する方法は? 例えば:
public class Person
{
public Address Address { get; set; }
}
public class Address
{
public string streetName {get;set;}
}
RDLC レポートに streetName の値を表示するには?
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 になることはありません。
すべてのプロパティについて、クラスで [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) として取得します